0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

雅特力AT32 MCU SPI/I2S入门指南

0739hhbb 来源:AT32 MCU 雅特力科技 2023-03-08 13:18 次阅读

SPI接口概述

AT32的SPI接口提供软件编程配置选项,根据软件编程配置方式不同,可以分别作为SPI和I2S使用。 本文将分SPI和I2S分别介绍SPI接口作SPI或I2S的功能特性以及配置流程。

AT32 SPI特点:

可编程配置的全双工或半双工通信

--全双工同步通信

--半双工同步通信(可以根据软件编程配置选择传输方向:发送或接收)

可编程配置主/从模式

可编程配置的CS模式:硬件/软件CS模式

可编程配置的时钟极性和相位

可编程配置的数据传输顺序(MSB/LSB)

可编程配置的错误中断标志(CS脉冲异常,接收溢出错误,主模式错误,CRC校验错误)

数据接收/发送均支持DMA

兼容TI的SSP协议(即TI模式)

AT32 I2S特点:

可编程配置的操作模式

--从设备发送

--从设备接收

--主设备发送

--主设备接收

可编程配置的时钟极性

可编程配置的时钟频率(8KHz到192KHz)

可编程配置的数据位数(16位,24位,32位)

可编程配置的声道位数(16位,32位)

可编程配置的音频协议

--I2S飞利浦标准

--高字节对齐标准(左对齐)

--低字节对齐标准(右对齐)

--PCM标准(长帧/短帧)

支持I2S全双工

支持DMA传输

在通讯期间可提供频率固定为256倍Fs(音频采样频率)的外设主时钟

SPI功能介绍

本章主要介绍SPI基本功能,以及AT32 SPI的各种附加可配置选项。

SPI硬件接口

SPI接口定义如下:

CS:片选引脚(可选)。 通常由主机输出,从机输入。 后续CS管理章节作详细介绍。

SCK:时钟引脚。 由主机输出,从机输入。

MISO:主收从发引脚。 主机则作为接收数据引脚,从机则做为发送数据引脚。

MOSI:主发从收引脚。 主机则作为发送数据引脚,从机则作为接收数据引脚。

以下介绍几种常见的SPI通信接线方式。

1)如下图1,是单主单从、全双工、CS硬件模式的应用接线示意图。

图1 SPI单主单从、全双工、硬件CS管理接线示意

wKgZomQD7huADJVdAABP61-fxzQ405.png

2)如下图2,是单主单从、全双工、CS软件模式的应用接线示意图。 在CS软件管理模式下,无需使用CS引脚,主/从机的CS引脚都可以释放给其他应用使用。 此时,从机对SWCSIL位清0或置1等效于“硬件CS模式”下的CS引脚输入低电平和高电平。 主机则必须将SWCSIL位置1,以保证正确的处于主机模式。

图2 SPI单主单从、全双工、软件CS管理接线示意

wKgaomQD7huAE7wOAAA9cEI2ReE809.png

3)如下图3,是单主多从全双工接线示意。

主机使用普通I/O口1n输出以驱动从机1n的片选CS,主机的SCK,MISO,MOSI和从机的SCK,MISO,MOSI引脚一对多连接。 此时SPI主机可以通过I/O1~n的选择与多个从机进行分时通信。 此时从机必须使用硬件CS模式。 主机可以使用软件CS模式,主机CS对应的引脚可以释放给其他应用使用。

图3 SPI单主多从、全双工接线示意

wKgaomQD7huAEncHAABletYaYSw646.png

4)如下图4,AT32的SPI增加了SPI半双工模式,此模式下只需要使用3线即可通信。

主机使用MOSI进行数据收/发。 当主机配置为半双工发送模式(SLBEN=1,SLBTD=1)时,主机MOSI为输出引脚,用于发送数据; 当主机配置为半双工接收模式(SLBEN=1,SLBTD=0)时,主机MOSI为输入引脚,用于接收数据。

从机使用MISO进行数据收/发。 当从机配置为半双工发送模式(SLBEN=1,SLBTD=1)时,从机MISO为输出引脚,用于发送数据; 当从机配置为半双工接收模式(SLBEN=1,SLBTD=0)时,从机MISO为输入引脚,用于接收数据。

图4 SPI单主单从、半双工接线示意

e6a7f75c-ba9b-11ed-bfe3-dac502259ad0.png

SPI数据接收和发送

如下图5,用户软件程序可以读和写数据寄存器,其他部分全由硬件自动完成。

以全双工,硬件CS管理,8bit数据格式为例。 收发一笔数据的流程如下:

作为SPI主机时:

软件使能SPI(SPIEN=1)后,硬件控制CS引脚输出低电平,以片选从机。 之后软件往数据寄存器写入数据,如下图5的“软件写数据寄存器”处,相当于往发送缓冲器写入待发送数据,之后硬件会自动将发送缓冲器的待发送数据搬运到移位寄存器。 同时将发送缓冲器空标志置1(TDBE=1),以提醒软件又可以往数据寄存器写入下一笔待发送的数据。 之后硬件立即开始在SCK引脚上输出时钟信号,并在MOSI引脚上发出待发送数据的第一bit数据。 之后硬件从MISO引脚上读取待接收数据的第一bit数据并放入移位寄存器中(移位寄存器由于之前发送了1bit数据,此时正好有一bit位置可以存放收到的数据)。 之后硬件会通过移位寄存器自动发送和接收剩下的7bit数据。 之后硬件会将移位寄存器中接收到的8bit数据搬运到接收缓冲器中,并将接收缓冲器满标志置1(RDBF=1),以提醒软件可以通过读取数据寄存器来读取刚刚接收到的这笔数据。

作为SPI从机时:

软件使能SPI(SPIEN=1)后,软件往数据寄存器写入数据,相当于往发送缓冲器写入待发送数据,然后硬件会将发送缓冲器空标志清0(TDBE=0),以提醒软件此时发送缓冲器已有待发送数据了。 之后硬件检测CS引脚和SCK引脚,等待来自主机的片选和时钟信号。 检测到片选和时钟信号之后,硬件自动将发送缓冲器的待发送数据搬运到移位寄存器并在MISO引脚上发出待发送数据的第一bit。 同时将发送缓冲器空标志置1(TDBE=1),以提醒软件又可以往数据寄存器写入下一笔待发送的数据。 之后硬件从MOSI引脚上读取待接收数据的第一bit数据并放入移位寄存器中(移位寄存器由于之前发送了1bit数据,此时正好有一bit位置可以存放收到的数据)。 之后硬件根据在SCK上的时钟信号,会在MISO和MOSI引脚上发送和接收剩下的7bit数据。 之后硬件会将移位寄存器中接收到的8bit数据搬运到接收缓冲器中,并将接收缓冲器满标志置1(RDBF=1),以提醒软件可以通过读取数据寄存器来读取刚刚接收到的这笔数据。

也可以参考下一小节“SPI时序”来理解SPI收发逻辑。

图5 SPI数据接收/发送框图

wKgaomQD7huAKAObAAC8vCXD1cM691.png

SPI时序

本节介绍SPI通信时序。 包括全双工和半双工的主/从通信时序。

1、SPI全双工时序

以全双工、硬件CS管理、单主单从通信为例。

其中主机端相关配置如下:

MSTEN=1:设备为主机;

SLBEN=0:全双工模式;

CLKPOL=0:SCK空闲输出低电平;

CLKPHA=0:SCK第一个边沿开始进行数据捕获;

FBN=0:帧位个数为8bit;

SWCSEN=0,HWCSOE=1:使用硬件CS管理;

主机发送数据(MOSI):0xAA,0xCC,0xAA;

从机发送数据(MISO):0xCC,0xAA,0xCC。

主机端时序见下图 6 :

图6 硬件CS管理-全双工-主机通信时序

e6de9690-ba9b-11ed-bfe3-dac502259ad0.png

其中从机端相关配置如下:

MSTEN=0:设备为从机

SLBEN=0:全双工模式;

CLKPOL=0:SCK空闲低电平

CLKPHA=0:SCK第一个边沿进行数据捕获

FBN=0:帧位个数为8bit

SWCSEN=0:使用硬件CS管理

主机发送数据(MOSI):0xAA,0xCC,0xAA

从机发送数据(MISO):0xCC,0xAA,0xCC

从机端时序见下图 7 :

图7 硬件CS管理-半双工-从机通信时序

e6f0acf4-ba9b-11ed-bfe3-dac502259ad0.png

2、SPI半双工时序

半双工时序下,有主机发送、从机接收、主机接收、从机发送4种模式。

1)以半双工、硬件CS管理、主机发送-从机接收通信为例。

其中主机端相关配置如下:

MSTEN=1 :设备为主机;

SLBEN=1 :使能单线双向半双工模式;

SLBTD=1 :发送模式;

CLKPOL=0:SCK空闲输出低电平;

CLKPHA=0:SCK第一个边沿开始进行数据捕获;

FBN=0:帧位个数为8bit;

SWCSEN=0,HWCSOE=1:使用硬件CS管理;

主机发送数据:0xAA,0xCC,0xAA;

主机端时序见下图 8 :

图8 硬件CS管理-半双工-主发时序

e7094af2-ba9b-11ed-bfe3-dac502259ad0.png

其中从机端相关配置如下:

MSTEN=0:设备为从机;

SLBEN=1 :使能单线双向半双工模式;

SLBTD=0 :接收模式;

CLKPOL=0:SCK空闲低电平;

CLKPHA=0:SCK第一个边沿进行数据捕获;

FBN=0:帧位个数为8bit;

SWCSEN=0:使用硬件CS管理;

从机接收数据:0xAA,0xCC,0xAA;

从机端时序见下图 9 :

图9 硬件CS管理-半双工-从收时序

wKgZomQD7huAatFDAABuOEsQNlU287.png

2)以半双工、硬件CS管理、主机接收-从机发送通信为例。

其中主机端相关配置如下:

MSTEN=1 :设备为主机;

SLBEN=1 :使能单线双向半双工模式;

SLBTD=0 :接收模式;

CLKPOL=0:SCK空闲输出低电平;

CLKPHA=0:SCK第一个边沿开始进行数据捕获;

FBN=0:帧位个数为8bit;

SWCSEN=0,HWCSOE=1:使用硬件CS管理;

主机接收数据:0xAA,0xCC,0xAA;

主机端时序见下图10:

此模式下,较为特别的是,SPI主机一旦使能(SPIEN=1),就会连续不断的输出时钟。 因此,主机在接收完需要接收的数据后,需要关闭SPI。 在本例中,接收完连续的3笔数据后,也就是下图10的箭头处,需要关闭SPI,输出多余的时钟。

另外,如下图10,此模式下,BF标志始终为低。

图10 硬件CS管理-半双工-主收时序

e73c6d88-ba9b-11ed-bfe3-dac502259ad0.png

其中从机端相关配置如下:

MSTEN=0:设备为从机;

SLBEN=1 :使能单线双向半双工模式;

SLBTD=1 :发送模式;

CLKPOL=0:SCK空闲低电平;

CLKPHA=0:SCK第一个边沿进行数据捕获;

FBN=0:帧位个数为8bit;

SWCSEN=0:使用硬件CS管理;

从机发送数据:0xAA,0xCC,0xAA;

从机端时序见下图 11 :

图11 硬件CS管理-半双工-从发时序

e7570c38-ba9b-11ed-bfe3-dac502259ad0.png

SPI数据收发方式

SPI的接收和发送如前文所述,是通过操作数据寄存器来完成的。 而根据操作数据寄存器的方法,SPI有以下3种数据接收发送方式。

轮询方式

轮询方式不需要使能SPI中断和DMA。 只需要在main函数中不断读取STS寄存器,并判断TDBE和RDBF标志是否置起,以确定何时向数据寄存器写入待发送数据,何时从数据寄存器读取接收到的数据。 比较耗费CPU资源,不建议使用此方式。 具体请参考“案例1--SPI全双工轮询方式通信”一节。

中断方式

中断方式需要开启“发送数据缓冲器空中断使能”和“接收数据缓冲器满中断使能”,即设置TDBEIE=1,RDBFIE=1。 并配置和使能SPI中断。 之后在SPI中断里进行数据的发送和接收,避免了轮询方式的等待耗时,占用CPU资源相对较少。 具体请参考“案例4--SPI半双工中断方式通信”或“案例5--SPI半双工中断方式通信--加收发切换”一节。

DMA方式

DMA方式需要开启SPI的DMA接收/发送功能(DMAREN=1,DMATEN=1)。 并配置DMA通道映射到SPI和使能DMA。 之后的接收和发送均由DMA完成,收/发过程不再需要软件参与,不占用CPU资源。 具体请参考“案例2--SPI全双工DMA方式通信”一节。

时钟控制器

SPI协议采用同步传输。 作主机时,需要时钟控制器产生通信时钟用于SPI接口的数据收发,并且需要将该通信时钟通过SCK引脚输出给从机,用于从机的数据收发; 作从机时,需要外部提供通信时钟,从SCK引脚输入到SPI接口内部作为通信时钟使用。 对用户而言,可软件配置的主要有极性、相位、分频系数三个参数

极性

SPI时钟极性,即空闲时SCK引脚输出的电平。 通过配置CLKPOL位来选择SPI时钟极性。

如下图12:CLKPOL=0时,SCK空闲为低电平; CLKPOL=1时,SCK空闲为高电平。

图12 时钟极性对比

e7700ef4-ba9b-11ed-bfe3-dac502259ad0.png

相位

SPI时钟相位,即SPI数据捕获边缘。 通过配置CLKPHA位来选择SPI时钟极性。

如下图13:

CLKPHA=0时,第一个边沿为捕获采样边沿。 在本例中(CLKPOL=0),也就是上升沿为采样沿; 相对的,本例中下降沿为驱动沿。

CLKPHA=1时,第二个边沿为捕获采样边沿。 在本例中(CLKPOL=0),也就是下降沿为采样沿; 相对的,本例中上升沿为驱动沿。

图13 时钟相位对比

e7838cb8-ba9b-11ed-bfe3-dac502259ad0.png

分频系数

SPI时钟是从APB时钟分频得到的,通过配置MDIV[3:0]和MDIV3EN来选择需要的分频系数,以确定SPI时钟。 分频系数仅主机配置有效。 从机需要外部提供时钟,因此此项配置无效。

CS管理

SPI CS包含硬件和软件管理两种模式,又根据主机/从机的不同,有不同的配置和应用场景。

在CS为输入模式时(HWCSOE=0),如下图14,主机和从机均通过SWCSEN位来选择SPI实际使用的CS信号来自软件设置(SWCSIL)还是外部CS引脚电平。

在CS为输出模式时(HWCSOE=1),软件CS模式相关配置无效。

图14 SPI数据接收/发送框图

e7a45b3c-ba9b-11ed-bfe3-dac502259ad0.png

以下分别列出了主机和从机在不同的CS管理模式下的状态和应用场景。

主机CS管理:

下表1列出了几种主机CS管理的配置及应用场景。

表1 SPI主机CS管理配置

e7c81ffe-ba9b-11ed-bfe3-dac502259ad0.png

注:“--”表示此项配置无效,建议保持默认配置。

从机CS管理:

下表2列出了从机CS管理的几种配置和应用场景。 其中,从模式下HWCSOE配置无效,该位只在主模式下有效。

表2 SPI从机CS管理配置

wKgZomQD7huANz48AAFFo8-60KM445.png

注:“--”表示此项配置无效,建议保持默认配置。

CRC校验

AT32 SPI具有独立的发送和接收CRC计算单元,用户可通过软件配置使能此功能。 使能CRC校验之后:硬件会对发送的数据进行CRC计算,并将计算得到的CRC校验码放在SPI_TCRC寄存器中,CRC校验码紧接在数据之后发送; 且硬件会在接收一笔数据时对接收到的数据进行CRC计算,并将计算得到的CRC校验码放在SPI_RCRC寄存器中,硬件会在一笔连续的数据接收完成后将最后接收到的CRC校验码与SPI_RCRC寄存器中的校验码进行比较,如果不符,CRC校验错误位(CCERR)会置起,若使能了错误中断(ERRIE=1),将会产生中断。

另外,SPI通信方式使用DMA和使用轮询/中断方式时,CRC功能的软件操作步骤有区别,如下:

轮询 /中断方式:

①配置CRC多项式:配置SPI_CPOLY寄存器和需要通信的SPI一致(默认值为0x0007);

②使能CRC功能:CCEN=1;

③使能SPI:SPIEN=1;

④发送待发送的数据data_1~data_n;

⑤请求发送CRC校验码:NTC=1。

注:NTC置1的时间参考下图15的⑤段,需要在最后一笔数据(data_n)写入数据寄存器到发送完成之间。 实际编写软件代码时,建议在data_n写入数据寄存器之后立即将NTC置1。

⑥硬件自动在data_n发送完成后立即发送CRC校验码(此时无需软件参与)。

轮询方式使用CRC功能可参考“案例6--SPI CRC功能使用”。

图15 CRC使用流程(轮询/中断方式)

e827cbd4-ba9b-11ed-bfe3-dac502259ad0.png

DMA方式:

SPI在使用DMA方式通信时,不需要软件代码去设置请求发送CRC校验码,即不需要去置位NTC位。 具体步骤如下:

①配置DMA:请参考“案例2--SPI全双工DMA方式通信”的DMA配置部分;

②配置CRC多项式:配置SPI_CPOLY寄存器和需要通信的SPI一致(默认值为0x0007);

③使能CRC功能:CCEN=1;

④使能SPI:SPIEN=1;

⑤数据及CRC接收完成后需关闭SPI和DMA,之后再开启,准备下一次通信。

TI模式(TI SSP协议)

AT32 SPI接口支持TI SSP协议,即TI模式。 用户可以通过将TIEN位置1来使能TI模式。

使能TI模式后,SPI接口将按照TI协议要求产生时钟SCK,和片选信号CS。 也就是CS软/硬件管理相关控制位、时钟极性/相位相关控制位配置无效,请保持默认设置。 使能TI模式后,帧格式(8/16bit)配置、CRC校验、DMA等功能仍然可以使用。

TI模式下,连续和不连续通信稍有区别。 连续通信时,只有第一笔数据发送时有一个dummy CLK; 不连续通信时,每笔数据都有一个dummy CLK。 参考下图16和图17。

TI模式连续通信时序图见下图16。 主机发送数据(MOSI):0xAA,0xCC,0xAA; 从机发送数据(MISO):0xCC,0xAA,0xCC。

图16 TI模式连续通信时序图

e8397988-ba9b-11ed-bfe3-dac502259ad0.png

TI模式不连续通信时序图见下图17。 主机发送数据(MOSI):0xAA,0xCC,0xAA; 从机发送数据(MISO):0xCC,0xAA,0xCC。

图17 TI模式不连续通信时序图

e84f12ac-ba9b-11ed-bfe3-dac502259ad0.png

注:AT32只有部分型号支持TI模式。 AT32F425/F435/F437等型号支持TI模式,AT32F403/F403A/F407/F413/F415等型号不支持TI模式。 具体请参考各型号的RM。

SPI错误

AT32的SPI有4种错误标志。 这4种错误标志共用一个错误中断使能位(ERRIE)。 也就是当ERRIE=1时,产生以下4种错误的任一错误就会进入SPI错误中断。

CSPAS--CS脉冲异常置位标志

在TI模式下,当SPI作从机使用时,SPI会在数据传输期间侦测非预期的CS脉冲,当发生CS脉冲异常置位错误,CSPAS被硬件置1,如果开启了错误中断使能(ERRIE=1),则会产生错误中断。 之后可以通过软件读SPI_STS清除该位。 当侦测到CS脉冲异常时,为避免数据错误,软件应当关闭SPI从机,重新配置SPI主机,再打开SPI从机以重新开始通信。

注:仅在TI模式下,CSPAS错误标志才有效。

ROERR-- 接收器溢出错误标志

当SPI数据寄存器已暂存一笔待读数据时,又收到一笔新数据,则会发生接收器溢出错误,ROERR被硬件置1,如果开启了错误中断使能(ERRIE=1),则会产生错误中断。 发生溢出错误之后,SPI_DT寄存器存放的是最早收到的那笔数据,发生溢出错误之后收到的数据都被丢弃。

之后依次读取SPI_DT寄存器和SPI_STS寄存器可清除该标志位。

MMERR-- 主模式错误标志

参考“CS管理”一节,当SPI主机为CS输入模式且CS引脚输入低电平时,会产生主模式错误,MMERR位会被硬件置1,且硬件会强制SPI进入从机模式(MSTEN清0)并关闭SPI(SPIEN清0)。 如果开启了错误中断使能(ERRIE=1),则会产生错误中断。

清除MMERR标志位并从错误状态恢复请严格按照以下步骤执行:

①拉高CS引脚电平;

②执行一次对SPI_STS寄存器的读或写操作;

③执行一次对SPI_CTRL1寄存器的写操作; (不需要改变SPI_CTRL1的值,只需要写这个动作)

④之后硬件会自动清除MMERR标志(此步骤不需要软件代码参与);

⑤之后软件可根据需要重新配置主/从模式和使能SPI。

CCERR--CRC****校验错误标志

当使能了CRC功能后,如果接收到的CRC校验码(发送方发送的校验码)和SPI_RCRC的校验码(接收方根据接收到的数据计算的校验码)不符,则硬件将CCERR位置1,如果开启了错误中断使能(ERRIE=1),则会产生错误中断。

由于发生了CRC校验错误,软件程序应当丢弃之前接收到的一笔数据,并重新通信。 软件对CCERR位写0可清除该标志位。

SPI中断

如下图18,SPI有一个全局中断向量。 SPI中断有三个中断源:接收缓冲器满、发送缓冲器空、通信错误(详见上一节“SPI错误”)。 这三个中断源分别有对应的使能位。

下图中,3个中断使能位定义如下:

RDBFIE:接收数据缓冲器满中断使能

TDBEIE:发送数据缓冲器空中断使能

ERRIE:错误中断使能

下图中,5个标志位定义如下:

ROERR:接收器溢出错误

MMERR:主模式错误

CCERR:CRC校验错误

RDBF:接收数据缓冲器满

TDBE:发送数据缓冲器空

图18 SPI中断示意

e85dc02c-ba9b-11ed-bfe3-dac502259ad0.png

I2S功能介绍

I2S硬件接口

I2S接口定义如下:

WS:声道选择。 由主机输出,从机输入。

CK:时钟。 由主机输出,从机输入。

MCK:主时钟输出(可选)。 在通讯期间可提供频率固定为256倍Fs的外设主时钟,仅在作为主机时有效。

SD:数据。 主机/从机接收或发送数据均通过这个引脚。

以下是常见的I2S通信接线方式。

如下图19,是I2S主发从收的接线示意图。

图19 I2S主发从收通信接线示意

wKgZomQD7huALTYwAAAn4K6YrdA258.png

如下图20,是I2S主收从发的接线示意图。

图20 I2S主收从发通信接线示意

e888be62-ba9b-11ed-bfe3-dac502259ad0.png

I2S数据接收和发送

I2S数据收发模块和上文的SPI共用数据寄存器和DMA映射,如上图5中的接收/发送缓冲器、移位寄存器也都是共用的,因此软件代码操作类似,请参考下文的I2S案例一节。 不过SPI默认是全双工,而I2S默认是半双工。 AT32也为用户提供I2S全双工功能,后文I2S全双工一节详细介绍。

I2S音频协议

AT32的I2S支持以下4种标准协议:

飞利浦标准:STDSLE=0b00;

高字节对齐标准(左对齐):STDSLE=0b01;

低字节对齐标准(右对齐):STDSLE=0b10;

PCM标准:STDSLE=0b11。

其中PCM标准又分为:

1、PCM长帧同步:PCMFSSEL=1;

2、PCM短帧同步:PCMFSSEL=0。

下图21在“16位数据-32位声道格式”,I2S时钟极性为低(I2SCLKPOL=0)条件下对比了几种音频标准一帧数据的通信时序。

飞利浦模式下:WS为低电平表示正在传输的声道为左声道,WS为高电平表示正在传输的声道为右声道。 数据左对齐,即高位对齐,低位的16个bit被硬件填充为0。

MSB标准下:WS为高电平表示正在传输的声道为左声道,WS为低电平表示正在传输的声道为右声道。 数据左对齐,即高位对齐,低位的16个bit被硬件填充为0。

LSB标准下:WS为高电平表示正在传输的声道为左声道,WS为低电平表示正在传输的声道为右声道。 数据右对齐,即低位对齐,高位的16个bit被硬件填充为0。

注:LSB标准下,数据发送顺序还是高位在前。

PCM标准长帧下:没有左右声道之分,WS的脉冲代表同步信号而不是左右声道。 WS脉冲长度为13个CK长度。

PCM标准短帧下:没有左右声道之分,WS的脉冲代表同步信号而不是左右声道。 WS脉冲长度为1个CK长度。

图21 I2S各音频标准时序对比

e8a0d006-ba9b-11ed-bfe3-dac502259ad0.png

I2S帧格式

AT32的I2S支持3种数据位个数选择:

16位:I2SDBN=0b00

24位:I2SDBN=0b01

32位:I2SDBN=0b10

AT32的I2S支持2种声道位个数选择:

16位:I2SDBN=0

32位:I2SDBN=1

数据位个数和声道位个数组合有以下4种帧格式:

①16位数据-16位声道格式:I2SDBN=0b00,I2SDBN=0;

②16位数据-32位声道格式:I2SDBN=0b00,I2SDBN=1;

③24位数据-32位声道格式:I2SDBN=0b01,I2SDBN=1;

④32位数据-32位声道格式:I2SDBN=0b10,I2SDBN=1;

上述的第②、③帧格式中,由于声道位个数>数据位个数。 此时硬件会自动将多余的声道位填充为0。 可参考上图21中,“16位数据-32位声道格式”的时序。

上述的①、②帧格式,在接收/发送数据时,仅需要读取/写入一次16bit的DT寄存器; 而③、④帧格式,在接收/发送数据时,需要读取/写入两次16bit的DT寄存器。

I2S时钟控制器

I2S 采样率( Fs )

常见的音频的采样频率有:192KHz、96kHz、48kHz、44.1kHz、32kHz、22.05kHz、16kHz、11.025kHz、8kHz等。 而实际上AT32的I2S可以产生以上范围内的任何采样率。

例如采样率为192K,则表示每秒可传输192K帧音频数据。 对于飞利浦/MSB/LSB标准而言,一帧音频数据包含左、右通道两笔16/32bit的数据; 对于PCM标准而言,一帧数据仅包含一笔16/32bit的数据。

I2S 时钟( CK )和主时钟( MCK )

如下图22,I2S的时钟从系统时钟SCLK分频得来。 不过使用I2S时仍然需要使能挂载在APB时钟总线上的SPI接口时钟(SPIxEN=1),以用于I2S逻辑控制器等。

当需要输出主时钟(I2SMCLKOE=1),声道位个数为16bit(I2SDBN=0)时:

Fs=SCLK/[(162)((2*I2SDIV)+I2SODD)*8];

当需要输出主时钟(I2SMCLKOE=1),声道位个数为32bit(I2SDBN=1)时:

Fs=SCLK/[(322)((2*I2SDIV)+I2SODD)*4];

当不需要输出主时钟(I2SMCLKOE=0),声道位个数为16bit(I2SDBN=0)时:

Fs=SCLK/[(162)((2*I2SDIV)+I2SODD)];

当不需要输出主时钟(I2SMCLKOE=0),声道位个数为32bit(I2SDBN=1)时:

Fs=SCLK/[(322)((2*I2SDIV)+I2SODD)];

图22 I2S时钟

e8b1c884-ba9b-11ed-bfe3-dac502259ad0.png

如下表3,示例了系统时钟为240MHz时,配置192K的采样率推荐的I2S时钟配置方案。

表3 I2S时钟配置方案示例

e8c9a4ae-ba9b-11ed-bfe3-dac502259ad0.png

I2S全双工

AT32F403A/F407/F435/F437/F425等型号支持I2S全双工,AT32F403/F413/F415/F421等型号不支持I2S全双工,具体请参考对应型号RM文档。 不同型号MCU的I2S全双工实现方式也有所区别,本文会分别介绍AT32F403A/F407/F435/F437和AT32F425的I2S全双工功能。

AT32F403A/F407/F435/F437的I2S****全双工

AT32F403A/F407/F435/F437为了支持I2S全双工模式,额外例化了两个I2S模块(I2S2EXT,I2S3EXT)。 I2S2可与I2S2EXT组合在一起支持全双工模式,I2S3可与I2S3EXT组合在一起支持全双工模式。 代码可参考“案例3—AT32F403A/F407/F435/F437 I2S全双工DMA方式通信”。

在I2Sx可与I2SxEXT组成全双工模块时,I2Sx可配置为主或从模式,I2SxEXT只能配置为从模式。 I2SxEXT共享I2Sx的CK和WS,对应的有以下几种配置方式:

I2Sx主发(OPERSEL=0b10); I2SxEXT从收(OPERSEL=0b01);

I2Sx主收(OPERSEL=0b11); I2SxEXT从发(OPERSEL=0b00)。

I2Sx从发(OPERSEL=0b00); I2SxEXT从收(OPERSEL=0b01);

I2Sx从收(OPERSEL=0b01); I2SxEXT从发(OPERSEL=0b00)。

注:I2S2EXT和I2S3EXT只用于I2S全双工模式,而不能单独使用。

图23 I2S全双工结构图

e8e58f0c-ba9b-11ed-bfe3-dac502259ad0.png

AT32F425的I2S全双工

AT32F425的I2S全双工实现方式和AT32F403A/F407/F435/F437不同。 AT32F425可以通过设置SCFG_CFG2寄存器中的I2S_FD将两个SPI组合在一起实现I2S全双工。 代码可参考“案例4—AT32F425 I2S全双工DMA方式通信”。 CK和WS由I2S主导方提供,附属方的CK和WS对应引脚可以释放给其他功能使用。 根据I2S_FD配置,有以下几种组合方式:

I2S_FD=0b00:I2S1~3各自独立半双工工作;

I2S_FD=0b01:I2S1和I2S3组成全双工模式,其中I2S1为主导方,I2S3为附属方。

I2S_FD=0b10:I2S2和I2S3组成全双工模式,其中I2S2为主导方,I2S3为附属方。

I2S_FD=0b11:I2S1和I2S2组成全双工模式,其中I2S1为主导方,I2S2为附属方。

图24 I2S全双工结构图

e90ce2f0-ba9b-11ed-bfe3-dac502259ad0.png

I2S错误

ROERR-- 接收器溢出错误标志

此错误标志和SPI一样,请参考前文“2.9.2 ROERR--接收器溢出错误标志”。

TUERR-- 发送器欠载错误标志位

在I2S从发模式下,如果在CK上检测到了数据驱动沿,但新的发送数据并没有被写入数据寄存器,则会产生发送器欠载错误,此时硬件会将TUERR位置1。 软件读SPI_STS寄存器可清除该标志位。 此错误标志仅使用I2S时有效。

I2S中断

I2S和SPI共用一个全局中断向量,即下图25的“I2S中断”和上图18中的“SPI中断”共用同一个中断向量。 I2S中断有三个中断源:接收缓冲器满、发送缓冲器空、通信错误(详见上一节“I2S错误”)。 这三个中断源分别有对应的使能位。

下图中,3个中断使能位定义如下:

RDBFIE:接收数据缓冲器满中断使能(和SPI一样)

TDBEIE:发送数据缓冲器空中断使能(和SPI一样)

ERRIE: 错误中断使能(和SPI一样)

下图中,4个标志位定义如下:

ROERR:接收器溢出错误(和SPI一样)

TUERR:发送器欠载错误(仅I2S有这个错误标志)

RDBF:接收数据缓冲器满(和SPI一样)

TDBE:发送数据缓冲器空(和SPI一样)

图25 I2S中断示意

e92d4662-ba9b-11ed-bfe3-dac502259ad0.png

SPI案例

注:所有project都是基于keil5而建立,若用户需要在其他编译环境上使用,请参考

AT32xxx_Firmware_Library_V2.x.xprojectat_start_xxx emplates中各种编译环境(例如IAR6/7,keil4/5)进行简单修改即可。

案例1-SPI全双工轮询方式通信

功能简介

实现SPI2和SPI3之间的全双工轮询通信。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC11(味噌)

PD4(莫西)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspifullduplex_polling

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3通信配置;

开始轮询通信。

2)代码介绍

main函数代码描述

e9494f24-ba9b-11ed-bfe3-dac502259ad0.png

SPI通信配置函数代码描述

e9a083ac-ba9b-11ed-bfe3-dac502259ad0.png

SPI GPIO配置函数代码描述

wKgZomQD7huAA_kLAAUlERAd0HI374.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例2-SPI全双工DMA方式通信

功能简介

实现SPI2和SPI3之间的全双工DMA通信。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC11(味噌)

PD4(莫西)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspimotorola_fullduplex_dma

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3的通信配置和DMA配置;

开始DMA通信。

2)代码介绍

main函数代码描述

wKgZomQD7huAWJJKAAJVvcxLL8o372.png

SPI通信配置及DMA配置函数代码描述

wKgZomQD7huAbIIAAAoTChIS3ys759.png

SPI GPIO配置函数代码描述

wKgZomQD7huAMO6QAAUlQ_dv55A037.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例3-SPI只收通信

功能简介

实现SPI2和SPI3之间的单向只收通信。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PD4(莫西)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspionly_receive_mode_polling

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3的通信配置;

开始轮询通信。

2)代码介绍

main函数代码描述

wKgaomQD7huAdkW2AAJRb48bnlE723.png

SPI通信配置代码描述

wKgaomQD7huAZtT_AALpp7wUCSM906.png

SPI GPIO配置函数代码描述

eb7454ec-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例4-SPI半双工中断方式通信

功能简介

实现SPI2和SPI3之间的半双工通信。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_xxxxexamplesspihalfduplex_interrupt

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

设置SPI2和SPI3的中断处理函数;

配置SPI2和SPI3的通信配置;

开始中断通信。

2)代码介绍

main函数代码描述

wKgZomQD7huAKSqNAAGFNodyzgU155.png

中断处理函数代码描述

ebdfe126-ba9b-11ed-bfe3-dac502259ad0.png

SPI通信配置函数代码描述

ec11f7b0-ba9b-11ed-bfe3-dac502259ad0.png

SPI GPIO配置函数代码描述

wKgZomQD7huAMBb6AAQb2QUIL3o734.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例5-SPI半双工中断方式通信-加收发切换

功能简介

实现SPI2和SPI3之间的半双工收发切换通信。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspihalfduplex_transceiver_switch

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

设置SPI2和SPI3的中断处理函数;

配置SPI2和SPI3的通信配置;

开始中断通信。

2)代码介绍

main函数代码描述

ec716a7e-ba9b-11ed-bfe3-dac502259ad0.png

中断处理函数代码描述

ec9273c2-ba9b-11ed-bfe3-dac502259ad0.png

SPI通信配置函数代码描述

wKgZomQD7huAa8FaAAPCIQr5WoA084.png

SPI GPIO配置函数代码描述

wKgaomQD7huATzFKAAQcB9MlE04155.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例6-SPI CRC功能使用

功能简介

实现SPI2和SPI3之间的全双工通信和CRC校验。 接线如下:

SPI2 SPI3

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC11(味噌)

PD4(莫西)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspicrc_transfer_polling

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3通信配置;

开始轮询通信和CRC校验。

2)代码介绍

main函数代码描述

wKgZomQD7huAF8eHAAevkbAu0lA148.png

SPI通信配置函数代码描述

wKgaomQD7huAT_s7AANSMBYn8sg219.png

SPI GPIO配置函数代码描述

ede8a476-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例7-SPI TI模式使用(TI SSP协议)

功能简介

实现SPI2和SPI3之间的TI模式DMA通信。 接线如下:

SPI2 SPI3

PD0(CS)<--->PA4(CS)

PD1(短短板)<--->PC10(短单)

PC2(味噌)<--->PC11(味噌)

PD4(莫西)<--->PC12(莫西)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesspi i_fullduplex_dma

软件设计

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3的通信配置和DMA配置;

开始DMA通信。

2)代码介绍

main函数代码描述

ee19be58-ba9b-11ed-bfe3-dac502259ad0.png

SPI通信配置及DMA配置函数代码描述

ee4bac24-ba9b-11ed-bfe3-dac502259ad0.png

SPI GPIO配置函数代码描述

ee77b364-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

案例8-SPI读写FLASH(W25Q128)

功能简介

实现SPI2读/写flash(w25q128)。 接线如下:

SPI2 W25Q128

PD0(CS)<--->CS 引脚

PD1(单片)<--->CLK引脚

PC2(味噌)<--->引脚

PD4(MOSI)<--->DO引脚

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD和w25q128电路板

w25q128建议电路如下图26:

图26 w25q128建议电路

wKgaomQD7huADZ6aAAC7PoiAB48179.png

2)软件环境:

projectat_start_f437examplesspiw25q_flash

软件设计

1)配置流程

配置SPI2和对应GPIO;

读取flash ID;

擦除flash扇区;

向flash写入数据;

读取上一步flash写入数据的区域。

2)代码介绍

main函数代码描述

eedfeaf6-ba9b-11ed-bfe3-dac502259ad0.png

spi接口配置函数和gpio配置函数代码描述

ef091700-ba9b-11ed-bfe3-dac502259ad0.png

flash擦除函数代码描述

ef4c9b56-ba9b-11ed-bfe3-dac502259ad0.png

flash读数据函数代码描述

ef7b62ec-ba9b-11ed-bfe3-dac502259ad0.png

flash读ID函数代码描述

ef8edb24-ba9b-11ed-bfe3-dac502259ad0.png

flash写函数代码描述

efc922d4-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和FLASH通信正常。

案例9-SPI使用jtag引脚的配置

功能简介

实现SPI2和SPI3之间,使用特殊的jtag引脚的全双工轮询通信。 接线如下:

SPI2 SPI3

PD0(CS)<--->PA15(CS)

PD1(sck)<--->pb3(sck)

PC2(味噌)<--->PA13(味噌)

PD4(运动)<--->PA14(运动)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesuse_jtagpin_hardwarecs_dma

软件设计

注意:本文仅介绍了AT32F435/F437的SPI使用jtag引脚的配置,其他型号的使用配置稍有不同,请参照对应型号的BSP使用。

1)配置流程

配置SPI2和SPI3对应的GPIO;

配置SPI2和SPI3通信配置;

开始轮询通信。

2)代码介绍

main函数代码描述

wKgaomQD7huAcNVaAAKxwAdNLKM082.png

SPI通信配置函数代码描述

wKgZomQD7huAATeTAApGq65-cBI319.png

SPI GPIO配置函数代码描述

f09d915e-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明SPI2和SPI3通信正常。

I2S案例

案例1-I2S半双工DMA方式通信

功能简介

实现I2S2和I2S3之间的半双工DMA通信。 接线如下:

I2S2 I2S3

PD0(WS)<--->PA4(WS)

PD1(CK)<--->PC10(CK)

PD4(标清)<--->PC12(标清)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesi2shalfduplex_dma

软件设计

1)配置流程

配置I2S2和I2S3对应的GPIO;

配置I2S2和I2S3的通信配置和DMA配置;

开始DMA通信。

2)代码介绍

main函数代码描述

f1007a58-ba9b-11ed-bfe3-dac502259ad0.png

I2S配置及DMA配置函数代码描述

f11ddf1c-ba9b-11ed-bfe3-dac502259ad0.png

GPIO配置函数代码描述

wKgaomQD7huAIToKAAVI_gRhf18103.png

实验效果

AT-START BOARD的LED2亮起,说明I2S2和I2S3通信正常。

案例2-I2S半双工中断方式通信

功能简介

实现I2S2和I2S3之间的半双工中断方式通信。 接线如下:

I2S2 I2S3

PD0(WS)<--->PA4(WS)

PD1(CK)<--->PC10(CK)

PD4(标清)<--->PC12(标清)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesi2shalfduplex_interrupt

软件设计

1)配置流程

配置I2S2和I2S3对应的GPIO;

配置I2S2和I2S3的通信配置;

安排中断功能;

开始中断通信。

2)代码介绍

main函数代码描述

wKgaomQD7huAdG8dAAK1OUD8ex0695.png

I2S配置函数代码描述

f1f4c78e-ba9b-11ed-bfe3-dac502259ad0.png

I2S中断配置函数代码描述

f248e4ae-ba9b-11ed-bfe3-dac502259ad0.png

GPIO配置函数代码描述

wKgaomQD7huAERocAAVHvMqK_u8687.png

实验效果

AT-START BOARD的LED2亮起,说明I2S2和I2S3通信正常。

案例3-AT32F403A/F407/F435/F437 I2S全双工DMA方式通信

功能简介

实现I2S2和I2S3之间的全双工DMA通信。 接线如下:

I2S2 I2S3

PD0(WS)<--->PA4(WS)

PD1(短短板)<--->PC10(短单)

PC2(ext_sd)Rx<--->pc11(ext_sd)TX

PD4(SD)TX<--->PC12(SD)RX

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_xxxxexamplesi2sfullduplex_dma

软件设计

1)配置流程

配置I2S2和I2S3对应的GPIO;

配置I2S2和I2S3的通信配置和DMA配置;

开始DMA通信。

2)代码介绍

main函数代码描述

f2abd4b0-ba9b-11ed-bfe3-dac502259ad0.png

I2S配置及DMA配置函数代码描述

wKgaomQD7huAWErjAAr4dnHNuTI248.png

GPIO配置函数代码描述

f39dec00-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明I2S2和I2S3全双工通信正常。

案例4-AT32F425 I2S全双工DMA方式通信

功能简介

实现I2S1和I2S2组成一个全双工I2S,组成的全双工I2S接口定义如下:

PA4(ws)

PA5(CK)

PA6(MCK)

PA7(SD TX)

PB14(ext_sd 接收)

由于AT32F425只有3个spi(I2S),只能组成一个全双工I2S,所以不能在同一块AT-START上用两个全双工I2S进行通信。 所以本案例使用一个全双工I2S进行自收自发通信,接线如下:

PA4(ws)<--->NC

PA5(ck)<--->NC

PA6(MCK)<--->NC

PA7(标清)<--->PB14(ext_sd)

用户也可以准备两块AT-START板子对测。 使用两块板子时,需要注意一块AT-START配置为主机,一块AT-START配置为从机。 本案例中的代码仅展示配置为主机,在一块AT-START上进行自发自收的配置。

资源准备

1)硬件环境:

一块AT32F425的AT-START BOARD

2)软件环境:

projectat_start_f425examplesi2sfullduplex_dma

软件设计

1)配置流程

配置I2S1和I2S2对应的GPIO;

配置I2S1和I2S2的通信配置和DMA配置;

开始DMA通信。

2)代码介绍

main函数代码描述

f3d2b688-ba9b-11ed-bfe3-dac502259ad0.png

I2S配置及DMA配置函数代码描述

f3f625c8-ba9b-11ed-bfe3-dac502259ad0.png

GPIO配置函数代码描述

f43c89be-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明I2S全双工通信正常。

案例5-I2S和SPI功能切换通信

功能简介

实现SPI2和SPI3之间通信切换到I2S2和I2S3之间通信。 接线如下:

SPI2/I2S2 SPI3/I2S3

PD0(CS/WS)<--->PA15(CS/WS)

PD1(sck/ck)<--->pb3(sck/ck)

PD4(莫西/标清)<--->PB5(莫西/标清)

资源准备

1)硬件环境:

一块AT32F437的AT-START BOARD

2)软件环境:

projectat_start_f437examplesi2sspii2s_switch_halfduplex_polling

软件设计

1)配置流程

配置SPI2/I2S2和SPI3/I2S3对应的GPIO;

配置I2S2和I2S3的通信配置(主发从收);

开始I2S2和I2S3的轮询通信,并核对数据;

配置SPI2和SPI3的通信配置(SPI3为主机半双工只发; SPI2为从机单向只收);

开始SPI2和SPI3的轮询通信,并核对数据;

配置I2S2和I2S3的通信配置(主收从发);

开始I2S2和I2S3的轮询通信,并核对数据。

2)代码介绍

main函数代码描述

f472e8c4-ba9b-11ed-bfe3-dac502259ad0.png

I2S配置函数代码描述

f4b17490-ba9b-11ed-bfe3-dac502259ad0.png

SPI配置函数代码描述

wKgZomQD7huAEkM2AANEqcO0ZFg106.png

GPIO配置函数代码描述

f54376d8-ba9b-11ed-bfe3-dac502259ad0.png

实验效果

AT-START BOARD的LED2亮起,说明I2S2和I2S3通信正常,SPI2和SPI3也通信正常。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    145

    文章

    15885

    浏览量

    342774
  • 接口
    +关注

    关注

    33

    文章

    7573

    浏览量

    148204
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1603

    浏览量

    89354
  • I2S
    I2S
    +关注

    关注

    1

    文章

    59

    浏览量

    41432
  • AT32
    +关注

    关注

    1

    文章

    97

    浏览量

    1797

原文标题:AT32讲堂048 | 雅特力AT32 MCU SPI/I2S入门指南

文章出处:【微信号:AT32 MCU 雅特力科技,微信公众号:AT32 MCU 雅特力科技】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么设置I2S

    问候语,我在协调I2S音频协议方面遇到了一些麻烦。我所能找到的所有帮助文件都显示I2S应该是驱动程序下的选项,但是它不在那里。但是,在SPI驱动程序下,I2S使用的是什么,我可以将它设
    发表于 10-22 15:07

    Cortex-M4高性能AT32F413系列MCU,优势替换STM32F103

    的热门型号如103系列涨幅已达2-3倍,并且交期延长24-30周。科技作为国产32位MCU的领导者,通过先进的55nm工艺,推出了百余
    发表于 01-22 14:40

    AT32 SPII2S入门指南

    本文参考I2S全双工章节。AT32控制器的大部分型号都是SPII2S共用SPI接口,根据软件编程配置来选择
    发表于 03-14 19:49

    AT32 MCU Cortex M4内核入门指南

    AT32 MCU Cortex M4内核入门指南主要介绍了AT32 M4 内核系统架构,并针对M4 内核自带的位带、硬件浮点运算单元和滴答时
    发表于 10-25 08:08

    AT32 MCU定时器入门指南

    AT32 MCU 定时器入门指南主要就定时器溢出中断进行基础讲解和案列解析。
    发表于 10-25 07:24

    AT32 MCU QSPI应用说明

    AT32 MCU QSPI Application Note主要介绍以下几部分内容:1. 基于提供的V
    发表于 10-25 06:18

    AT32 MCU CAN入门指南

    AT32 MCU CAN入门指南本文介绍了CAN 标准协议,AT32 CAN 的使用流程以及基于AT32
    发表于 10-25 06:01

    AT32 MCU SPI/I2S入门指南

    及对应引脚,具体请参考本文 I2S 全双工章节。AT32 控制器的大部分型号都是 SPII2S 共用 SPI 接口,根据软件编程配置来
    发表于 10-25 08:26

    AT32 MCU SDIO入门指南

    AT32 MCU SDIO入门指南本应用入门指南主要介绍以下几部分内容:1.基于
    发表于 10-25 08:08

    AT32 MCU XMC入门指南

    AT32 MCU XMC入门指南本文介绍了XMC 外设功能,以及上述几种存储器和LCD 的驱动方式和相关代码。
    发表于 10-25 08:08

    AT32 IDE快速入门指南

    AT32 IDE 快速入门指南帮助用户快速熟悉Artery AT32 IDE的简明指南
    发表于 10-26 06:13

    AT32讲堂048 | 雅特力AT32 MCU SPI/I2S入门指南

    SPI接口概述AT32SPI接口提供软件编程配置选项,根据软件编程配置方式不同,可以分别作为SPII2S使用。本文将分
    的头像 发表于 03-17 09:44 5479次阅读
    <b class='flag-5'>AT32</b>讲堂048 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b>/<b class='flag-5'>I2S</b><b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    AT32 MCU SDIO入门指南

    电子发烧友网站提供《AT32 MCU SDIO入门指南.pdf》资料免费下载
    发表于 09-19 16:18 0次下载
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> SDIO<b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    AT32 MCU SPI/I2S入门指南

    SPI(Serial Peripheral interface)是一种由 Motorola 最先推出的同步串行传输协议。SPI 是一种高速、 全双工、同步的通信总线,使用简单高效。 I 2S
    发表于 09-19 14:25 0次下载
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> <b class='flag-5'>SPI</b>/<b class='flag-5'>I2S</b><b class='flag-5'>入门</b><b class='flag-5'>指南</b>

    AT32 MCU CAN入门指南下载

    电子发烧友网站提供《AT32 MCU CAN入门指南下载.pdf》资料免费下载
    发表于 09-19 15:53 2次下载
    <b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> CAN<b class='flag-5'>入门</b><b class='flag-5'>指南</b>下载