查看: 1122|回复: 0

[原创] 【经验分享】RT1050/60 SAI主从机对接代码分享

[复制链接]

该用户从未签到

656

主题

6312

帖子

0

超级版主

Rank: 8Rank: 8

积分
20014
最后登录
2024-4-25
发表于 2021-8-24 14:49:05 | 显示全部楼层 |阅读模式
【经验分享】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连接,连接情况如下:

1.jpg
                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总线数据情况如下:
48K32bit_sync_64bitcheck.jpg

可以看到,主机的数据可以被从机成功接收,并且发送出去。由于逻辑分析的总线分析通道功能限制,所以把原本32bit*4通道的,使用64bit*2通道方式分析出来,结果一致。
附件分享主从机代码。
MIMXRT1062_SAI2_master_SYNC.zip (2.46 MB, 下载次数: 7)
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-25 16:48 , Processed in 0.111752 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表