完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我们这边使用BLE(CYW20829)作为SPI slave和MCU(TC387)作为SPI master,调试SPI通信时,遇到两个问题: 1.
1.slave接收来自master的数据,rx中断不触发。 SPI 初始化如下: SPI 初始化如下 代码段参考:https://infineon.github.io/psoc6hal/html/group__group__ hal__spi .html文档中的Snippet4:SPI 事件中断 代码修改基于例程:https://github.com/Infineon/mtb-example-hal-spi-slave#readme 尝试:调试过程中发现,slave 使用 cyhal_spi_slave_write时,rx中断正常触发,看代码该函数调用了 cyhal_spi_transfer_async。 问题:只有slave一直调用cyhal_spi_transfer_async进行读/写操作,rx中断才正常触发? 解决方案:有没有配置可以让master写入数据时,slave就触发SPI rx中断? 2.slave使用函数cyhal_spi_slave_write向master发送数据时,没有等待master拉低片选取并生成时钟信号,导致接收数据异常。 尝试:使用Cy_GPIO_读取CS引脚,直到该引脚被拉低。 问题:容易死循环,读取引脚数据一直为高电平。 解决方案 1:能否帮忙调试出一个该方案可行的代码? 解决方案2:是否有其他slave write函数,是等待master拉低片选并生成时钟信号,才发送数据? 希望能给出上述问题的解决方案。 |
|
相关推荐
1个回答
|
|
|
你遇到的两个SPI通信问题非常典型,与SPI协议的全双工本质以及Cypress HAL库对Slave角色操作方式的特定要求密切相关。以下是对每个问题的详细分析和解决方案: 核心问题根源:
问题1:Slave接收中断不触发
问题2:关于数据未发送却持续收到0xFF
总结与关键步骤
特别注意: SPI模式通常定义为 (CPOL, CPHA):
请务必查阅 TC387 SPI Master配置 和 CYW20829 SPI Slave HAL 库文档 ( 通过实施这个 “使用虚拟发送缓冲的持续双向异步传输” 策略,应该能够成功触发Slave的RX中断,并正确处理Master发来的数据,同时解决Master接收端收到0xFF的问题。这种方法符合SPI协议标准和Cypress HAL对Slave操作的要求。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
NRF54L15芯片开发安装路径对vscode不生效问题解析
1962 浏览 0 评论
在修改广播内容(如名称、UUID、广播数据等)时是否需要停用当前广播功能
1923 浏览 0 评论
nRF54芯片怎么烧录程序&nrfutil的安装使用
5466 浏览 0 评论
1130 浏览 0 评论
深入比较nRF52832和Nordic新的产品nRF54L15参数对比
5123 浏览 0 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 15:38 , Processed in 0.542964 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1372