S32K144 i2c master send

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

S32K144 i2c master send

1,343 次查看
zyc0211
Contributor II
 

您好,我想使用i2C来控制音频芯片。音频芯片的设备地址是0x3B,但寄存器地址很多,比如0xF890、0xF400,都是16位,而不是8位。那么如何使用LPI2C_DRV_MasterSendDataBlocking进行通信。

 

uint8_t reg_address[2];
reg_address[0] = 地址 >> 8;
reg_address[1] = 地址 &0xFF;
LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, reg_address, 2, 真, 10);
LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, pData, 长度, true, 10);

发送16位寄存器地址后,它会再次发送设备地址,但我不需要它,你能帮我吗?

标签 (1)
0 项奖励
回复
5 回复数

222 次查看
binZhang01
Contributor II
你为什么喜欢使用block发送和接收函数,他有个不带block发送的函数, 还有就是我这边使用的老是判断总线忙
0 项奖励
回复

1,290 次查看
Senlent
NXP TechSupport
NXP TechSupport

Hi@zyc0211

"发送16位寄存器地址后,它会再次发送设备地址",你意思是说在第二次调用发送的时候主机会再发一次从设备地址吗?

uint8_t reg_address[4];
reg_address[0] = 地址 >> 8;
reg_address[1] = 地址 &0xFF;

reg_address[2] = pData >>8;

reg_address[3] = pData & 0xff;

LPI2C_DRV_MasterSendDataBlocking(INST_LPI2C1, reg_address, 4, 真, 1000);

示波器看下数据顺序对不对,

0 项奖励
回复

1,285 次查看
zyc0211
Contributor II
是的,第二次调用的时候会再次发送从设备地址,但是我并不需要他再次发送从设备地址
0 项奖励
回复

1,336 次查看
zyc0211
Contributor II

 

 

0 项奖励
回复

1,341 次查看
zyc0211
Contributor II

zyc0211_0-1699595793182.png

0 项奖励
回复