STM32
直播中

王银喜

8年用户 2558经验值
私信 关注
[问答]

使用myir开发板进行spi通信的疑问求解

使用myir的开发板进行spi通信
问题:spi1和spi5在debug模式下都可以正常接收数据.
emmc模式下以固件形式加载则spi5可以正常通信,使用spi1则无法接收到数据。
之后屏蔽掉spi1的a7节点,开启(或不开启)m4_spi1的节点依然无法进行通信。
问题点:两个spi在debug模式下或者在a核下生成节点再去读写节点进行spi通信都可以正常通信。spi5无论a核下有无对应spi节点以及开启或不开启m4_spi5节点都可以正常通信。spi1无论a核下有无对应spi节点,以及开启或不开启m4_spi1节点都不能通信。(前提:有节点的情况下a核没有去执行读写操作)。
在关闭a7的spi1节点后,在emmc模式下将其对应的gpioz0-gpioz3节点导出并设置为输入中断成功(确认没有其他资源使用这些gpio)
m核和a核之间也可以正常进行通信。

回帖(2)

李铃华

2024-3-26 16:31:38
资源分配冲突的可能性比较大。
可以参考ST官方firmware下的spi例子,这里面即是使用的SPI1通讯。
对应设备树文件为stm32mp157c-ev1-m4-examples.dts

STM32CubeRepositorySTM32Cube_FW_MP1_V1.5.0ProjectsSTM32MP157C-DK2ExamplesSPI
举报

贾小龙

2024-3-26 18:10:52
首先,要确保在使用spi1进行通信时,已经正确配置了相关的寄存器和引脚复用。

在emmc模式下以固件形式加载时,可能需要对spi1进行重新配置。你可以尝试在使用spi1之前,手动配置相关的寄存器,包括:
- SPI1的控制寄存器(CR)
- SPI1的延迟寄存器(DLR)
- SPI1的数据寄存器(DR)

另外,如果在A核下生成了spi1节点并进行读写操作,但是仍然无法通信,可能是因为在生成节点时,没有正确配置spi1相关的寄存器。你可以查看生成节点时是否正确配置了spi1的CR、DLR和DR寄存器。

另外,你可以尝试进行以下步骤来解决问题:
1. 确保在使用spi1之前配置正确的引脚复用。
2. 手动配置spi1相关的寄存器,并确认其配置正确。
3. 确保生成spi1节点时正确配置了相关的寄存器。
4. 检查是否有其他地方修改了spi1相关的寄存器,造成通信失败。

最后,如果问题仍然存在,建议查阅相关的技术文档或联系开发板厂商的技术支持寻求帮助。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分