12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #include "MEMS.h"
- #include "IICs.h"
- /**
- * @brief MEMS数字型气体传感器IIC端口初始化
- * @param None
- * @retval None
- */
- void MEMS_init(uint8_t iicNo)
- {
- IIC_init(iicNo); // iic延时计数400
- }
- /**
- * @brief 读取MEMS数字型气体传感器检测浓度
- * @param None
- * @retval 返回读取到的数据 2字节
- */
- uint16_t MEMS_read(uint8_t iicNo)
- {
- uint8_t recHigh = 0,recLow = 0;
- IIC_start(iicNo);
- IIC_send_byte(iicNo, MEMS_wrAddr); // slave address + write cmd
- if(IIC_wait_ack(iicNo)) {
- IIC_stop(iicNo);
- return 0xFFFF;
- }
- IIC_send_byte(iicNo, 0xA1); // read cmd
- if(IIC_wait_ack(iicNo)) {
- IIC_stop(iicNo);
- return 0xFFFE;
- }
- IIC_start(iicNo);
- IIC_send_byte(iicNo, MEMS_rdAddr); // slave address + read cmd
- if(IIC_wait_ack(iicNo)) {
- IIC_stop(iicNo);
- return 0xFFFD;
- }
- recHigh = IIC_read_byte(iicNo, 1);
- recLow = IIC_read_byte(iicNo, 0);
- IIC_stop(iicNo);
- return (uint16_t)recHigh << 8 | recLow;
- }
|