请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:AFE4404 我使用 PSoC 4200与 AFE4404通信。 当我尝试对其进行读取或写入时、我会从 AFE4404接收到一个 NACK。 下面是我在尝试写入寄存器时通过 I2C 发送的读取和写入代码以及波形。
其他说明
我已经在其他传感器上测试了下面的代码,它运行正常。
-我正在使用的 PCB 是由其他人设计的、我无法切换 RESETZ 引脚
-我也无法测量来自 RESETZ、TX2、INM 和 INP 的电压
int PulseOx_read (uint8 reg) { uint8 Write_buf[1]={0}; write_buf[0]= reg; uint8 read_buf[3]={0}; Int readVal; database_I2CMasterWriteBuf (AFE_SLAVE_ADDRESS、(uint8 *) Write_buf、1、database_I2C_MODE_NO_STOP); while (((database_I2CMasterStatus ()& database_I2C_mstat_WR_CMpLT)==0){} database_I2CMasterReadBuf (AFE_SLAVE_ADDRESS、(uint8 *) read_buf、3、database_I2C_mode_repee_start); while (((database_I2CMasterStatus ()& database_I2C_mstat_RD_CMpLT)==0){} readVal = read_buf[0]; readVal =(readVal << 8)| read_buf[1]; readVal =(readVal << 8)| read_buf[2]; if (reg >= 0x2A && reg <= 0x2F) { if (readVal & 0x00200000) { readVal =~readVal + 1; readVal &= 0x003FFFFF; readVal *=-1; } } 返回 readVal; } void PulseOx_Write (uint8 reg、uint32数据) { uint8 Write_buf[4]; write_buf[0]= reg; write_buf[1]=(data & 0x00FF0000)>> 16; WRITE_BUFF[2]=(DATA & 0x0000FF00)>> 8; WRITE_BUF[3]=(DATA & 0x000000FF); database_I2CMasterWriteBuf (AFE_SLAVE_ADDRESS、(uint8*) Write_buf、4、database_I2C_MODE_COMPLETE_Xfer); while (((database_I2CMasterStatus ()& database_I2C_msat_WR_CMpLT)==0){} }