完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在我的CY8C588FNI设计中,使用固定功能的主I2C接口(IP版本3.5),我很少看到(按每秒一次访问一次的顺序),该接口在调用SDENSTATE()API函数后会被卡住。在调用SeNestSistar()之前,我检查MCSR以确保它是0,它是。通常,在该调用之后,MCSR转到0x0C(Buth-Woad和MSTRUX模式)。但是,在卡住的情况下,我看到它被设置为0x01(StaskGEN)——这是调用所断言的比特。没有多少等待帮助-寄存器停留在0x1。SeNestStar()完成无错误(NONError),但对I2C API函数的后续调用在NoTyRead中失败。
也就是说,在失败的情况下,I2C接口开始空闲,SeNSTART似乎完成了OK(它等待CSR WaITyByTeTeExcel完成),但是MCSR卡在StaskGEN中,并且从未完成。 这是当务之急,请帮忙。 --- 顺便说一下,我还观察到,调用sEdTestSug()API后,MCSR很少会在0xC停留一段时间,但是这是一个过渡状态,最终它会变成0x0。不过,这似乎是一个不正确的API实现——我希望sEntStutter()在接口和总线空闲之前旋转。 以上来自于百度翻译 以下为原文 In my CY8C5888FNI design with fixed-function master I2C interface (IP version 3.5), I see that very infrequently (on the order of once per hour under once-per-second accesses), the interface gets stuck after the SendStart() API function is called. Before calling SendStart(), I check the MCSR to make sure it is 0, which it is. Normally, after that call, the MCSR goes to 0x0C (BUS_BUSY and MSTR_MODE). However, in the stuck case, I see it set to 0x01 (START_GEN) - which is the bit that the call asserts. No amount of waiting helps - the register stays at 0x1. SendStart() completes without error (NO_ERROR), but subsequent calls to I2C API functions fail with NOT_READY. I.e., it appears that in the failing scenario, I2C interface starts out as idle, SendStart seemingly completes OK (its wait for CSR WAIT_BYTE_COMPLETE succeeds), yet the MCSR gets stuck in START_GEN and never completes. This is quite an urgent matter, please help. --- BTW, separately I've also observed that after calling SendStop() API, MCSR infrequently stays at 0xC for some time - however this is a transient condition, where it eventually changes to 0x0. Still, seems like this an incorrect API implementation - I'd expect SendStop() to spin until the interface and the bus go idle. |
|
相关推荐
2个回答
|
|
BTW,这是100kbPS模块。我尝试将频率降低到10 kbps,观察到另一种罕见但持久的失效模式——这次发生在sEntStutter()之后,MCSR最终被粘在0x1C上,而不是去0x0。
以上来自于百度翻译 以下为原文 BTW, this was with 100Kbps module. I tried reducing frequency to 10 Kbps, and observed another infrequent but persistent failure mode - this time it happens after the SendStop() and MCSR ends up being stuck at 0x1c, instead of going to 0x0. |
|
|
|
ligeht 发表于 2018-10-29 10:20 看起来问题是通过用NACK而不是ACK终止以前的读取来解决的。该问题在4 MHz时更为明显,因此更易于调试。 单个逻辑运算的整个序列是: A. SDESTART() BruteByter() C.停止() D. SDENSTART() E.读取字节() F-停止() 然后这个序列每秒重复几次。所以问题是: 1。当没有终止一个NAK导致A中的一个沉默问题,随后中断B)和接口的所有未来操作 2。乳清只有在较低的速度下才发生(lt=400 kHz)。 以上来自于百度翻译 以下为原文 Looks like the problem was resolved by terminating a previous read with a NAK rather than an ACK. The problem was much more pronounced at 4 MHz and therefore easier to debug. The whole sequence of the single logical operation is: a. SendStart() b. WriteByte() c. Stop() d. SendStart() e. ReadByte() f. Stop() Then the sequence repeats itself a few times a second. So the questions are: 1. When does not terminating e) with a NAK cause a silent problem in a) which subsequently breaks b) and all future operations of the interface 2. Whey does it happen only rarely at lower speeds (<=400 KHz)? |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2100 浏览 1 评论
1846 浏览 1 评论
3665 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1782 浏览 6 评论
1532 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
561浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
413浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
433浏览 2评论
379浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
906浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-20 05:43 , Processed in 0.829834 second(s), Total 79, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号