Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
I2C_IIC
NXP 微控制器
报一个LPC4008代码中I2C的bug
发布于 2015-07-27 10:42:00 浏览:3434
订阅该版
淘宝买的LPC4008开发板,验证I2C时发现bug 只能写一个寄存器,调了一下,发现bug如下 ```c static rt_size_t lpc_i2c_recv_bytes(LPC_I2C_TypeDef *I2Cx, struct rt_i2c_msg *msg) { rt_size_t bytes = 0; rt_size_t len = msg->len; rt_uint32_t stat = 0; while (len--) { I2Cx->CONCLR = I2C_I2CONCLR_SIC; if (len == 0) { I2Cx->CONCLR = I2C_I2CONCLR_AAC; } else { I2Cx->CONSET = I2C_I2CONSET_AA; } while (!(I2Cx->CONSET & I2C_I2CONSET_SI)); msg->buf[bytes++] = (uint8_t)(I2Cx->DAT & I2C_I2DAT_BITMASK); stat = I2Cx->STAT & I2C_STAT_CODE_BITMASK; if (len && (I2C_I2STAT_M_RX_DAT_ACK != stat)) { i2c_dbg("i2c recv error on the byte of %d,send ack error! ", bytes); return bytes; } **_ if ((len==0)&&(I2C_I2STAT_M_RX_DAT_NACK != stat))_** { i2c_dbg("i2c recv error on the byte of %d,send nack error! ", bytes); return bytes; } } return bytes; } ``` 原来是`else if(I2C_I2STAT_M_RX_DAT_NACK != stat)` 请验证修改
查看更多
3
个回答
默认排序
按发布时间排序
aozima
2015-07-27
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
我有空也试试
aozima
2015-07-27
调网络不抓包,调I2C等时序不上逻辑分析仪,就像电工不用万用表!多用整理的好的文字,比截图更省流量,还能在整理过程中思考。
更新后测试通过,这里确实有问题。 判断条件不充分,当读取多字节时,就提前异常返回了,并把总线给钳制起来了。 ``` software/rtthread_examples/drivers/drv_i2c.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/software/rtthread_examples/drivers/drv_i2c.c b/software/rtthread_examples/drivers/drv_i2c.c index 3928600..af26f1e 100644 --- a/software/rtthread_examples/drivers/drv_i2c.c +++ b/software/rtthread_examples/drivers/drv_i2c.c @@ -142,7 +142,7 @@ static rt_size_t lpc_i2c_recv_bytes(LPC_I2C_TypeDef *I2Cx, struct rt_i2c_msg *ms i2c_dbg("i2c recv error on the byte of %d,send ack error! ", bytes); return bytes; } - else if (I2C_I2STAT_M_RX_DAT_NACK != stat) + else if ( (len == 0) && (I2C_I2STAT_M_RX_DAT_NACK != stat) ) { i2c_dbg("i2c recv error on the byte of %d,send nack error! ", bytes); return bytes; ```
撰写答案
登录
注册新账号
关注者
0
被浏览
3.4k
关于作者
tuoxiebb
这家伙很懒,什么也没写!
提问
1
回答
0
被采纳
0
关注TA
发私信
相关问题
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
组件 lwip v2.0.3 版本使用 netdev网卡的 ping 功能
2
简单两步配置RTT源码阅读环境 vsc+clangd
3
恩智浦[FRDM-MCXN947]初探 之 ADC与DAC
4
LVGL使用字库IC芯片显示中文
5
基于STM32H750和Rt-Thread的CANFD通信实现的记录(一)
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
4
次点赞
用RTT跑流水灯
1
篇文章
2
次点赞
catcatbing
1
篇文章
2
次点赞
YZRD
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部