OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 9485|回复: 9

STM32F765 SAI接口如何区分slot

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-9-7
在线时间
17 小时
发表于 2018-9-7 13:00:09 | 显示全部楼层 |阅读模式
1金钱
STM32F765  SAI接口如何区分slot,SAI接口如何区分不同声道的数据

最佳答案

查看完整内容[请看2#楼]

你有几个声道,就用几个slot。 具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先填充slot0,再填充slot1,也可以反过来搞。。。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2018-9-7 13:00:10 | 显示全部楼层
你有几个声道,就用几个slot。  具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先填充slot0,再填充slot1,也可以反过来搞。。。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-9-7
在线时间
17 小时
 楼主| 发表于 2018-9-8 07:03:02 来自手机 | 显示全部楼层
正点原子 发表于 2018-9-7 13:00
你有几个声道,就用几个slot。  具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先填充sl ...

填充不同的slot数据,是通过填充给发FIFO不同的位置填充数据?比如:我要填充slot0就只需填充发FIFO的第一个字节(8位数据)?
回复

使用道具 举报

0

主题

109

帖子

0

精华

初级会员

Rank: 2

积分
167
金钱
167
注册时间
2018-9-2
在线时间
8 小时
发表于 2018-9-8 07:54:23 | 显示全部楼层
同感,你有几个声道,就用几个slot。  具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先填充slot0,再填充slot1,也可以反过来搞。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2018-9-7
在线时间
17 小时
 楼主| 发表于 2018-9-12 20:00:51 来自手机 | 显示全部楼层
mhsdsa 发表于 2018-9-8 07:54
同感,你有几个声道,就用几个slot。  具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先 ...

请问填充slot就是填充需要发送的fifo吗?现在我的情况我把接收到的音频信号在发送回去,就不对了
回复

使用道具 举报

1

主题

16

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2019-5-23
在线时间
6 小时
发表于 2020-3-12 15:23:25 来自手机 | 显示全部楼层
  2018-9-7 13:00
мüslot  slotsl ...

11 22I2SЭ飬16232λ.12У12
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-4-24
在线时间
7 小时
发表于 2022-5-25 12:18:44 | 显示全部楼层
正点原子 发表于 2018-9-7 13:00
你有几个声道,就用几个slot。  具体每个slot对应哪个声道,完全由你自己填充的数据来决定,你可以先填充sl ...

请问原子哥, 怎么设置填充的顺序呢? 我现在碰到的问题是slot错位了, 我设置的是TDM模式,2个slot,结果示波器看到的是缓冲区里的最后一个数据和第一个数据组成了第一帧. 然后依此类推.
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-4-24
在线时间
7 小时
发表于 2022-5-25 19:56:16 | 显示全部楼层
我先填充测试数据:
for(i=0;i<AUDIO_BUF_NUM;i++)       
{
    index=0;
    for(j=0;j<AUDIO_OUT_PACKET;j+=4)
    {
        saibuf[j]=i;
        saibuf[j+1]=index;
        saibuf[j+2]=0x85;
        saibuf[j+3]=0xFF;       
        index++;
    }
}

SAIA_Init(SAI_MODEMASTER_TX,SAI_CLOCKSTROBING_RISINGEDGE,SAI_DATASIZE_24);        //SAI1 Block A,主模式发送
SAIA_SampleRate_Set(48000);                                                                                                //设置采样率       
SAIA_TX_DMA_Init(saibuf[0],saibuf[1],AUDIO_OUT_PACKET/4,2);                                                 //配置TX DMA,32位
sai_tx_callback=audio_sai_dma_callback;                                                                                //回调函数指向audio_sai_dma_callback
saiplaybuf=0;
SAI_Play_Start();                                                                                                                        //开始SAI数据发送(主机)       

然而示波器看到的结果, 传输的第一帧数据是对的, 第二帧slot0也是对的,slot1就又复位到第一帧slot0的内容了.
也就是说传输完一帧半的数据后又回复到DMA缓冲区的最前面了. 见下图:
QQ截图20220525195424.jpg
想不明白可能是哪里出问题了.
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2022-4-24
在线时间
7 小时
发表于 2022-5-27 19:23:00 | 显示全部楼层
bd7bq 发表于 2022-5-25 19:56
我先填充测试数据:
for(i=0;i

我的问题解决了.
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2015-8-7
在线时间
18 小时
发表于 2022-8-1 10:27:28 | 显示全部楼层
bd7bq 发表于 2022-5-27 19:23
我的问题解决了.

是啥问题
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-8 01:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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