1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
采用STM32 mcu,采用电脑串口向OD2101发送100字节的数据(od2101缓冲区最多只能缓存64字节数据),I2C从这个芯片却只能读取到64字节数据,有什么办法能够读到100字节数据吗?
这是收到数据产生中断的代码 if (Set == EXINT_IrqFlgGet(ExtiCh05)) { Ddl_Delay1ms(50); od2101_Read_Reg(UARTBUF,&len,1); printf("recv len=%dn",len); for (uint8_t i=0; i od2101_Read_Reg(RD,&recv_buf,1); } ctrl = 0x80; od2101_Write_Reg(CTRL, &ctrl,1); printf("recv_buf=%sn",recv_buf); /* clear int request flag */ EXINT_IrqFlgClr(ExtiCh05); } Ddl_Delay1ms(50); |
|
相关推荐
1个回答
|
|
注意 I2C 的传输协议对 ACK 的定义。在一个字节帧中有一个 ACK 位,接收方在正确接收后且要继续接收时,要将数据线在此时刻拉低。
如果发送方检测到 ACK 依然是高,有如下可能: 1 没有响应的接收方; 2 接收方接收错误; 3 接收方不再继续接收。 此情况下,发送方就会停下来。 这些协议控制,一般都是硬件实现的。 你的情况很可能是外界干扰导致发送方未能正确识别 ACK: 1 检查你作为接收方器件的驱动能力。 2 试试增大上拉电阻,减小上拉强度,降低对接收方的下拉驱动能力要求。 3 适当采取抗干扰措施,如缩短或加粗信号线,使用屏蔽线等等。 很可能你周边在下午有强力电机启动,或有较强的无线信号发射运行。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2105 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1941 浏览 3 评论
4537 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2084 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2599 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 01:43 , Processed in 0.544264 second(s), Total 42, Slave 36 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号