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 個回答

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽