iic连续写三个地址_stm32 软件i2c连续写寄存器抓包时出现问题,有几个的从机地址发生错误...

在RTT_studio环境下,使用STM32进行I2C通信时,尝试通过write_reg函数连续写多个传感器寄存器,但抓包发现部分从机地址出现错误。问题可能源于I2C总线配置或数据传输过程中的异常。检查代码中PA3和PA4的配置,并排查其他可能导致通信失败的因素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

利用rtt_studio开发,读取寄存器的时候正常,

代码如下,/* 写传感器寄存器 */

static rt_err_t write_reg(struct rt_i2c_bus_device *bus, rt_uint8_t reg, rt_uint32_t data)

{

rt_uint8_t buf[4];

struct rt_i2c_msg afe_msgs;

buf[0] = reg;

buf[1] = (rt_uint8_t)data>>16;

buf[2] = (rt_uint8_t)data>>8;

buf[3] = (rt_uint8_t)data;

afe_msgs.addr = AFE_ADDR;

afe_msgs.flags = RT_I2C_WR;

afe_msgs.buf = buf;

afe_msgs.len = 4;

/* 调用I2C设备接口传输数据 */

if (rt_i2c_transfer(bus, &afe_msgs, 1) == 1)

{

rt_thread_mdelay(30);

return RT_EOK;

}

else

{

return -RT_ERROR;

}

}

//如下为写的代码

write_reg(i2c_bus,0x01,0x0000002B); /*LED2STC*/

write_reg(i2c_bus,0x02,0x00000033); /*LED2ENDC*/

write_reg(i2c_bus,0x03,0x00000043); /*LED1LEDSTC*/

write_reg(i2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值