我使用了MCU_MCSPI0和MCU_MCSPI1分别对外接了两个外设。使用EB配置成异步中断模式。
使用mcsw中的mcal-spi驱动代码(ti-processor-sdk-rtos-j721e-evm-07_03_00_07)。
两路SPI配置如下:
MCU_MCSPI0 - seq0 - job0 - channel0 - 外设0
MCU_MCSPI1 - seq1 - job1 - channel1 - 外设1
调试发现问题,现象如下:
1. MCU_MCSPI0跟外设0通信都OK;(逻辑分析仪截取数据跟中断读取RAM数据都OK)
2. MCU_MCSPI1单独发送,逻辑分析仪截取发现没有数据发出;
3. 先发一包SPI0再发一包SPI1,SPI0数据OK,但是SPI1发送的数据是SPI0的,另外RAM读取数据都是0。
换种方法测试,将SPI0和SPI1的通道配置互换,即
MCU_MCSPI1 - seq0 - job0 - channel0 - 外设0
MCU_MCSPI0 - seq1 - job1 - channel1 - 外设1
测试结果是SPI1收发正常了,SPI0又出现了上面说明的异常情况。
以上调试结果分析,只有当外设配置的所有参数配置在第0的位置才好使,怀疑是MCAL源代码有问题,但也不排除是我的配置或者使用方法有问题。
请教下你们是否用MCAL的SPI代码调试过多路SPI,是否遇到以上的问题?
(注:1. 以上相关测试代码参照了MCAL examples中的McspiApp.c初始化及发送流程,但是examples中的官方测试代码只测试了一路SPI0对应一路chan0。 2. autosar配置文件是基于demo中的基础上使用EB修改配置的。)