【经验分享】RT1050/60 SAI主从机对接代码分享 本文代码分享来自客户的案例需求:使用RT1050接受SAI信号,并且将接收的信号再通过发送数据发出去。要求SAI信号格式为: 32bit(SYNC 高)+32bit*3(SYNC 低)。 发送数据情况如下: Sync1 high Word 0 0x01234567 Sync1 low Word 1 0x87654321 Word 2 0xABCDEF01 Word 3 0x5555AAAA Sync2 high Word 0 0x00000000 Sync2 low Word 1 0x00000000 Word 2 0x00000000 Word 3 0x00000000 然后总线循环接收再loop发送上述sync1+sync2+sync1+sync2…数据。 所以本文使用MIMXRT1060-EVK作为SAI主机,MIMXRT1050-EVK作为SAI从机来实现上述功能。开发板使用SAI2连接,连接情况如下:
Master Slave TX_SYNC GPIO_AD_B0_04 SW7_4 GPIO_AD_B0_04 SW7_4 TX_BCLK GPIO_AD_B0_05 SW7_3 GPIO_AD_B0_05 SW7_3 TX_DATA GPIO_AD_B0_09 j22_5 GPIO_AD_B0_09 j22_5 RX_DATA GPIO_AD_B0_08 TP11 主机配置SYNC数据宽度为32bit,极性为activehigh, 数据段word 宽度为32bit,frame word数位4,使用DMA传输。 从机在SDK evkbimxrt1050_sai_edma_record_playback工程的基础上修改SAI1到SAI2的引脚,并且修改配置和主机一致,同步32bit,数据4word*32bit。 对于主机,将要发送的数据放在固定的.h中,然后循环发送,对于从机,接收数据后内部循环到发送buffer,并且发送到TX_DATA引脚,然后使用逻辑分析仪观察SAI总线数据情况如下:
可以看到,主机的数据可以被从机成功接收,并且发送出去。由于逻辑分析的总线分析通道功能限制,所以把原本32bit*4通道的,使用64bit*2通道方式分析出来,结果一致。 附件分享主从机代码。 |