目录
1.Cubemx配置硬件IIC
单片机使用的是STM32f407ZET6,主频168M。
2.MS5607的代码编写
#include "MS5607.h"
#include "i2c.h"
#include <rtthread.h>
#include <rtdbg.h>
#define MS5607_ADDR_WRITE 0x77<<1 //11011100
#define MS5607_ADDR_READ (0x77<<1)+1 //11011101
/**
* @brief 向MS5607发送一条指令(8bit)
* @param cmd —— MS5607指令(在MS5607Commads中枚举定义)
* @retval 成功返回HAL_OK
*/
static uint8_t MS5607_Send_Cmd(MS5607Command cmd)
{
return HAL_I2C_Master_Transmit(&hi2c1, MS5607_ADDR_WRITE, (uint8_t*)&cmd, 1, 0x00FF);
}
/**
* @brief 复位MS5607
* @param none
* @retval none
*/
void MS5607_reset(void)
{
MS5607_Send_Cmd(MS5607_CMD_RESET);
rt_thread_mdelay(100);
}
/**
* @brief 读取MS5607的PROM的值
* @param none
* @retval none
*/
void MS5607_Read_Prom(uint16_t *Buf)
{
uint8_t dat[2] = {0};
if(MS5607_Send_Cmd(MS5607_CMD_PROM_READ_0)!=0)
rt_kprintf("MS5607_Wtite_Prom[0]_FAil = %d\r\n",MS5607_Send_Cmd(MS5607_CMD_PROM_READ_0));
rt_thread_mdelay(2);
if(HAL_I2C_Master_Receive(&hi2c1, MS5607_ADDR_READ, dat, 2, 0xFFFF)!&