2440 iic clk异常

danto11 2011-08-01 10:21:24
最近小弟在做一个项目:用2440(主发送)跟一个芯片做通信(频率是100k)。
经过示波器测试发现一个问题:
在经过n次正常数据发送的之后,偶尔会出现一个字节的clk第九位一直拉高直到触发发送超时为止。(出现的地方很随机)
请问论坛里的高手们:
这种现象的原因是什么,另外,如何解决这个问题或者避免这个问题,我对驱动这方面不熟悉,希望大家可以细致的解释一下。
还有的是,这样的发送会不会影响接受方接收数据的正确性,因为我也发现接收方的数据有时候会应答位全部都有,但是最终却是一帧数据丢失的情况,这个情况和上述现象会不会有联系呢?


谢谢了先
...全文
150 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
danto11 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 bjtea 的回复:]
引用 4 楼 danto11 的回复:

示波器上显示都是ack是有应答的。这样的话又是什么原因呢

有应答,问题就放过来了。是主机这边太忙,或别的线程干扰吧,没有去响应应答及时做出反应,直到超时。
[/Quote]
我尝试一下往这个方向想一想,暂时我看驱动程序里,也仅仅是直接调用寄存器发送。我翻看了一下资料,发现这个现象应该是死锁,但是触发死锁的异常复位就不知道是什么了
当我遇上-你 2011-08-01
  • 打赏
  • 举报
回复
位不对,通信就不超过,肯定会影响的,用的什么通信方式?程序都查过了?
bjtea 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 danto11 的回复:]

示波器上显示都是ack是有应答的。这样的话又是什么原因呢
[/Quote]
有应答,问题就放过来了。是主机这边太忙,或别的线程干扰吧,没有去响应应答及时做出反应,直到超时。
danto11 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wswwxk 的回复:]
位不对,通信就不超过,肯定会影响的,用的什么通信方式?程序都查过了?
[/Quote]
我是直接调用2440的寄存器的,应该影响不了clk的工作吧
danto11 2011-08-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 bjtea 的回复:]
写时序中,“一个字节的clk第九位”恰好是被写芯片返回“应答”信号的时间。说明主机芯片一直在等应答信号,直至触发超时。估计从机太忙,来不及响应。
[/Quote]

示波器上显示都是ack是有应答的。这样的话又是什么原因呢
bjtea 2011-08-01
  • 打赏
  • 举报
回复
写时序中,“一个字节的clk第九位”恰好是被写芯片返回“应答”信号的时间。说明主机芯片一直在等应答信号,直至触发超时。估计从机太忙,来不及响应。
northcan 2011-08-01
  • 打赏
  • 举报
回复
时序问题?

19,502

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 嵌入开发(WinCE)
社区管理员
  • 嵌入开发(WinCE)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧