i2c 读取无法发送 nack 和停止位

发布于 2022-09-11 21: 58: 04

Screenshot_20220911_215436. png
Screenshot_20220911_215459. png

读取和写入的逻辑分析仪波形如上图

代码如下
void QMC5883_Write (u8 addr, u8 data)
{

tls_i2c_write_byte (QMC5883_SlaveAddress,  1) ; 
tls_i2c_wait_ack () ; 
tls_i2c_write_byte (addr,  0) ; 
tls_i2c_wait_ack () ; 
tls_i2c_write_byte (data,  0) ; 
tls_i2c_wait_ack () ; 
 tls_i2c_stop () ; 

}

u8 QMC5883_Read_Byte (u8 addr)
{

uint8_t data; 
tls_i2c_write_byte (QMC5883_SlaveAddress,  1) ; 
tls_i2c_wait_ack () ; 
tls_i2c_write_byte (addr,  0) ; 
tls_i2c_wait_ack () ; 
tls_i2c_write_byte (QMC5883_SlaveAddress+1,  0) ; 
tls_i2c_wait_ack () ; 
data = tls_i2c_read_byte (0,  1) ; 
return data; 

}
写入可以正常产生停止位, 但是读取无法产生, 使用的是 w800 的最新库函数.

查看更多

关注者
0
被浏览
1. 5k
ZYQ
ZYQ 2022-09-12
我已不再支持 W80X 任何相关问题的回复, 请大家不要私信, 有问题找 isme 谢谢

image. png

1 个回答

撰写答案

请登录后再发布答案, 点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览