完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
1. 使用的是modus开发环境生成的SPI_master测试代码;
2. SPI接收使用下面的代码: result = cyhal_spi_transfer( sSPI, NULL ,NULL , receive_data ,10u , 0xff); if (CY_RSLT_SUCCESS != result) { handle_error(); } else { printf("receive_1 = %02x %02x %02x %02x %02x %02x %02x %02xrn", receive_data[0],receive_data[1],receive_data[2],receive_data[3], receive_data[4],receive_data[5],receive_data[6],receive_data[7]); } cyhal_spi_transfer接收的数据长度如果大于实际传过来的长度时,会卡死,使用调试功能,发现卡死在以下位置: 请问,SPI的接收有什么特殊的设置吗? cy_rslt_t cyhal_spi_transfer(cyhal_spi_t *obj, const uint8_t *tx, size_t tx_length, uint8_t *rx, size_t rx_length, uint8_t write_fill) { if (NULL == obj) return CYHAL_SPI_RSLT_BAD_ARGUMENT; if (_cyhal_scb_pm_transition_pending()) return CYHAL_SYSPM_RSLT_ERR_PM_PENDING; obj->write_fill = write_fill; cy_rslt_t rslt = cyhal_spi_transfer_async(obj, tx, tx_length, rx, rx_length); if (rslt == CY_RSLT_SUCCESS) { 卡死在这个while里面 while (obj->pending != _CYHAL_SPI_PENDING_NONE) { } /* Wait for async transfer to complete */ } obj->write_fill = (uint8_t) CY_SCB_SPI_DEFAULT_TX; return rslt; } |
|
相关推荐
2个回答
|
|
|
你仔细看下这个接口的参数形式,他是在一个接口里面 完成了收发,而且要你指定收发数据的length,也就是你指定每次的数据包长度,从你的描述里面来看,你收到数据包长度低于你指定的,那他就认为数据没收完,当然会一直在这个函数里面判断什么时候收到完整的数据包。
|
|
|
|
|
|
可能导致卡死的原因有以下几种:
1. 数据长度设置错误:cyhal_spi_transfer接收的数据长度必须与实际传输的数据长度相匹配,如果设置的长度大于实际传输的长度,可能会导致卡死。在你的代码中,数据长度设置为10u,如果实际传输的数据长度小于10字节,可能导致卡死。 2. 数据接收缓冲区错误:接收数据的缓冲区必须足够大以容纳实际传输的数据。如果接收数据的缓冲区大小不足以容纳实际传输的数据长度,可能会导致卡死。在你的代码中,接收数据的缓冲区长度应该是8个字节,如果长度设置不正确,可能导致卡死。 解决方法: 1. 确保数据长度设置正确:根据实际传输的数据长度,正确设置cyhal_spi_transfer接收的数据长度。如果不确定实际传输的数据长度,可以通过其他方法进行检测或采取动态分配内存的方式。 2. 确保接收缓冲区大小正确:根据实际传输的数据长度,确保接收数据的缓冲区大小足够大。如果接收数据的缓冲区大小不足,可以调整缓冲区大小或采取动态分配内存的方式。 3. 检查其他部分代码:除了接收数据的代码,还要检查其他代码是否存在问题。例如,是否正确配置了SPI引脚、时钟等。 如果以上方法仍然无法解决问题,建议尝试使用调试工具进行调试,查看具体的卡死原因,并根据具体情况进行排查和修复。 |
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
435 浏览 0 评论
464 浏览 0 评论
450 浏览 0 评论
806 浏览 0 评论
RT-Thread与英飞凌(infineon)合作得板子PSOC 6 板子学习
748 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
17012 浏览 31 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 06:07 , Processed in 0.908811 second(s), Total 77, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2222