STM8S系列如何采集BMP280
stm8吧
全部回复
仅看楼主
level 1
老小冬瓜 楼主
unsigned long bmp280_compensate_P_int64(signed long adc_P)
{
signed long long var1, var2, p;
var1 = ((signed long long)t_fine) - 128000;
var2 = var1 * var1 * (signed long long)stcTrimP.P6;
var2 = var2 + ((var1*(signed long long)stcTrimP.P5)<<17);
var2 = var2 + (((signed long long)stcTrimP.P4)<<35);
var1 = ((var1 * var1 * (signed long long)stcTrimP.P3)>>8) + ((var1 * (signed long long)stcTrimP.P2)<<12);
var1 = (((((signed long long)1)<<47)+var1))*((signed long long)stcTrimP.P1)>>33;
if (var1 == 0)
{
return 0; // avoid exception caused by division by zero
}
p = 1048576-adc_P;
p = (((p<<31) -var2)*3125)/var1;
var1 = (((signed long long)stcTrimP.P9) * (p>>13) * (p>>13)) >> 25;
var2 = (((signed long long)stcTrimP.P8) * p) >> 19;
p = ((p + var1 + var2) >> 8) + (((signed long long)stcTrimP.P7)<<4);
return (unsigned long)p;
}
这段程序在STM32测试,没问题,但移植到STM8就出问题了,程序中有段左移47位的,IAR编程环境处理不了这么大的数据,有没有什么算法可以解决这个问题
2017年09月13日 10点09分 1
level 1
博世微型气压传感器BMP280 原装现货优势出售 Q298873787
13529887378
7
2020年12月19日 03点12分 2
1