完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问下,在Psoc 4 下如何判断当前 EZI2C是否处于活动状态?
if(0 == (EZI2C_KEY_EzI2CGetActivity() EZI2C_KEY_EZI2C_STATUS_BUSY) 在使用时,是否不要勾选 Clock streching? 因为 函数只有在不勾选Clock streching 时, status 才有更新值。 uint32 EZI2C_KEY_EzI2CGetActivity(void) { uint32 status; EZI2C_KEY_DisableInt(); /* Lock from interruption */ status = EZI2C_KEY_curStatus; /* Relay on address match event from HW as bus busy status */ #if(EZI2C_KEY_EZI2C_SCL_STRETCH_DISABLE) { /* For EZI2C_KEY_CY_SCBIP_V0 the wake is prohibited by customizer */ #if(EZI2C_KEY_EZI2C_EC_AM_ENABLE) { status |= EZI2C_KEY_CHECK_INTR_I2C_EC(EZI2C_KEY_INTR_I2C_EC_WAKE_UP) ? EZI2C_KEY_EZI2C_STATUS_BUSY : 0u; } #else { status |= EZI2C_KEY_CHECK_INTR_SLAVE(EZI2C_KEY_INTR_SLAVE_I2C_ADDR_MATCH) ? EZI2C_KEY_EZI2C_STATUS_BUSY : 0u; } #endif } #endif EZI2C_KEY_curStatus = ((uint8) ~EZI2C_KEY_EZI2C_CLEAR_STATUS); EZI2C_KEY_EnableInt(); /* Release lock */ return(status); } 另外,在这个函数的介绍中,是这样描述的: EZI2C_KEY_EZI2C_STATUS_BUSY - A transfer intended for the primary or secondary address is in progress. The status bit is set after an address match and cleared on a Stop or ReStart condition. 这个参数是否只是在地址匹配的时候才是置位的,当Stop产生时,或Restart产生时,这个就被清零了。也就是说这个EZI2C_KEY_EZI2C_STATUS_BUSY的时间很短吧。 Thanks。 |
|
相关推荐
1个回答
|
|
在Psoc 4下,可以使用以下方法判断当前EZI2C是否处于活动状态:
1. 首先,确保已经正确配置和初始化EZI2C组件。 2. 使用以下代码来获取当前EZI2C的状态: ```c uint32 EZI2C_KEY_EzI2CGetActivity(void){ uint32 status; EZI2C_KEY_DisableInt(); /* Lock from interruption */ status = EZI2C_KEY_curStatus; EZI2C_KEY_EnableInt(); /* Unlock after interrupt processing */ return status; } ``` 此处的`EZI2C_KEY_curStatus`是EZI2C组件的状态寄存器,可以通过读取该寄存器来获取EZI2C的状态。 3. 可以通过以下代码判断EZI2C是否处于活动状态: ```c if(0 == (EZI2C_KEY_EzI2CGetActivity() & EZI2C_KEY_EZI2C_STATUS_BUSY)){ // EZI2C is not busy, it is in idle state } else { // EZI2C is busy, it is in active state } ``` 这里使用了`EZI2C_KEY_EZI2C_STATUS_BUSY`来判断EZI2C是否处于活动状态。 在使用时,是否勾选Clock stretching不会影响判断EZI2C状态的结果。但是需要注意,在读取EZI2C状态之前,最好先禁用中断,以确保获取的状态是准确的。在读取完状态后,需要及时重新启用中断。以上代码中的`EZI2C_KEY_DisableInt()`和`EZI2C_KEY_EnableInt()`用于禁用和启用EZI2C中断。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
7 浏览 0 评论
26 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
13 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
644 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1000 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11770 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 05:09 , Processed in 0.785874 second(s), Total 74, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号