在 IMXRT1171 上,当尝试用 LPSPI EDMA 使用多个从属设备时,SDK 无法正常工作。 调用了错误的回调,并传递了错误的用户数据。
这是由于 lpspi_masterTransferCreateHandleedMA 中的一个错误造成的,它使用内部静态状态(s_lpspimasteredMapPrivateHandle [])来跟踪 lpspi_master_edma_handle,但每个 SPI 总线实例只包含一个。如果您在同一个 SPI 总线上有多个具有单独的 lpspi_master_edma_handles、回调和 PCSE 的从属服务器,则该状态最终将被您配置的最后一个状态覆盖,从而导致所有接收/发送完成调用错误的回调。
你好@nxp16、
感谢您对恩智浦半导体产品的关注并有机会为您服务。
感谢您的提问。
对于使用一个 LPSPI 主站和一个以上 SPI 从站的应用,可在应用级进行处理。
LPSPI EDMA 句柄本身不存储任何特定于从站的信息。 每次开始传输时,句柄都会根据当前传输的配置进行更新。因此,每笔交易都是独立的。
您可以 在传输开始前记录要与哪个从属设备(PCS)通信 ,然后在普通回调中使用该记录来了解哪个从属设备的传输已经完成。
使用这种方法,无需更改驱动程序即可支持多个从属设备。
希望对您有所帮助
顺祝商祺!
MayLiu