最近做的一个小项目里需要使用GY30这款光照强度传感器,估计不少人都用过,I2C通信的。
不太想用店家例程给的用GPIO模拟的方式,想试试硬件I2C。
按照GY30数据手册的要求,第一步是发送从机地址和指令0x01来让传感器上电,这里我设置完I2CMasterSlaveAddrSet这个函数并确认无误之后,就按照连续发送的方式来设置I2CMasterControl这个函数,由于就是发送两个字节,于是第一个用了I2C_MASTER_CMD_BURST_SEND_START,第二个用了I2C1_BASE,I2C_MASTER_CMD_BURST_SEND_FINISH;每发送完一个字节之后,先用I2CMasterBusy来检测发送是否完成,之后再用I2CMasterErr函数来检测发送是否成功;
结果是:发送地址这个字节时没有问题,但是一旦发送0X01这个指令,I2CMasterErr就会报错,根据反馈回的错误类型,是数据应答错误,也就是没有产生ACK位。
请问有大佬遇到过这种问题吗?该如何解决呢?
另外再请问一下,I2CMasterSlaveAddrSet这个函数的设置是否已经包含了“向从机传递对应地址和读写方向”这样的操作呢?
此帖出自
小平头技术问答
一周热门 更多>