文章目录
一、MS5837-30BA相关介绍
1.技术参数
- 陶瓷-金属封装,3.3 x 3.3 x 2.75 mm
- 高分辨率模块,0.2 mbar (1mbar = 100pa)
- 快速转换可达 0.5 ms
- 低功率,0.6 µA(25°C 时待机功率 < 0.1 µA)
- 集成式数字压力传感器(24 位 ΔΣ ADC)
- 电源电压:1.5 至 3.6 V
- I2C 接口,地址:1110110x( Write:x = 0,Read:1 = x)
- 量程:0-30Bar(0-3Mpa)
- 水深分辨率:2mm
2.典型应用电路
3.PROM中的标定参数
每一个模块都是工厂在两种温度和两种压力下单独校准的。结果是6个系数必要的补偿过程变化和温度变化是计算和存储在112-bit每个模块的位PROM。MS5837-30BA包含一个112位的PROM存储器。实现了一个4位CRC来检查数据有效性,在内存中这些位(划分为6个系数C1到C6)必须由单片机软件,并在程序中将D1和D2转换成补偿压力和温度的值。系数C0表示工厂配置和CRC。
C0 CRC 与 工厂配置
C1 压力灵敏度 SENS|T1
C2 压力补偿 OFF|T1
C3 温度压力灵敏度系数 TCS
C4 温度系数的压力补偿 TCO
C5 参考温度 T|REF
C6 温度系数的温度 TEMPSENS
二、MS5837-30BA数据解算
1.解算流程图
2.初始化读取标定参数并进行CRC校验
①MS5837复位
/**
* @brief MS583703BA 复位
* @param None
* @retval None
*/
void MS583703BA_RESET(void)
{
IIC_Start();
IIC_Send_Byte(MS583703BA_SlaveAddress);//CSB接地,主机地址:0XEE,否则 0X77
IIC_Wait_Ack();
IIC_Send_Byte(MS583703BA_RST);//发送复位命令
IIC_Wait_Ack();
IIC_Stop();
}
②MS5837 CRC4-bit 校验官方示例
/**
* @brief MS5837_CRC4校验(4bit校验)【官方数据手册提供】
* @param MS5837 PROM标定参数数组
* @retval 返回CRC校验码
*/
unsigned char MS5837_CRC4(unsigned int n_prom[]) // n_prom defined as 8x unsigned int (n_prom[8])
{
int cnt; // simple counter
unsigned int n_rem=0; // crc remainder
unsigned char n_bit;
n_prom[0]=((n_prom[0]) & 0x0FFF); // CRC byte is replaced by 0
n_prom[7]=0; // Subsidiary value, set to 0
for (cnt = 0; cnt < 16