Download presentation
Presentation is loading. Please wait.
1
C6000的片上外设
2
C6713片上集成有丰富的外设: 2个McBSP 2个McASP 2个IIC总线 1个16位HPI接口
2个32位通用定时器Timer0和Timer1 1个通用I/O模块 GPIO McBSP1 OR TMS320C6713 Floating-Point DSP C67xTM DSP Core Level 1 Program Cache 4K Bytes McBSP 0 2 Timers Level 2 Cache/Memory 256K Bytes SRAM Level 1 Data Cache 4K Bytes McASP 0 HPI GPIO EMIF Enhanced DMA Controller (EDMA) 16 Channel IIC 1 IIC 0 McASP 1
3
CODEC(立体声) DSP 双路UART USB2.0
立体声输出 麦克风输入 双路UART UART = Universal Asynchronous Receiver Transmitter,通用异步收发器 RS232/RS485/RS422 USB2.0 计算机USB口 立体声 输入
5
片上外设复用外部引脚 HPI和McASP1+GPIO复用引脚,这些引脚的功能选用由复位时HD14(HPI_EN)引脚的状态来确定:
HD14=0,配置为McASP1+GPIO HD14=1,配置为HPI SEED-DEC6713模板上,引脚HD14片内上拉,片外通过跳针JP8下拉。缺省情况下,JP8短路,即SEED-DEC6713缺省配置McASP1+GPIO功能有效,HPI功能无效
6
片上外设复用外部引脚 Timer0+Timer1+McBSP0+McBSP1和McASP0+IIC1+IIC0复用引脚。这些引脚由片上设备配置寄存器DEVCFG (019C 0200~ 019C 02FF) 中的McBSP0DIS, McBSP1DIS, TOUT0SEL, TOUT1SEL等位来确定
7
多通道缓冲串口(McBSP)概述 McBSP: Multi-channel Buffered Serial Port;一种多功能的同步串行通信接口,具有很强的可编程能力,可以配置为多种同步串口标准,直接与各种器件高速接口 McBSP的特点 (1) 全双工串行通信 (2) 双缓冲数据寄存器,允许连续的数据流 (3) 独立的收发帧同步和时钟信号 (4) 可以与工业标准的Codec(编/解码器)、AICs(模拟接口芯片)、串行A/D、D/A接口 (5) 直接与T1/E1帧、ST-BUS兼容芯片、IOM-2兼容芯片、AC97兼容芯片、IIS兼容芯片、SPI芯片接口 (6) 最多可实现128个通道的发送和接收
8
多通道缓冲串口(McBSP)概述 (7) 支持8/12/16/20/24/32bit的数据宽度 (8) 内置u-律和A-律压控硬件
(9) 对8bit 数据的传输,可选择LSB或MSB方式 (10)可设置帧同步信号和数据时钟信号的极性 (11)内部传输时钟和帧同步信号可编程程度高
9
McBSP的信号接口 McBSP接口信号 McBSP的内部结构框图 数据通道 CLKX:串行发送器位-时钟引脚
控制通道 McBSP接口信号 CLKX:串行发送器位-时钟引脚 FSX: 串行发送器帧同步引脚 DX: 串行发送器数据引脚 CLKR:串行接收器位-时钟引脚 FSR: 串行接收器帧同步引脚 DR: 串行接收器数据引脚 CLKS:外部位-时钟输入引脚 RINT:接收中断,送往CPU XINT:发送中断,送往CPU REVT:接收同步事件,送往DMA控制器 XEVT:发送同步事件,送往DMA控制器 McBSP的内部结构框图
10
McBSP McBSP结构与原理 DX DR FSR CLKR CLKX FSX Data Bus SPC Control Logic
DRR DXR XSR RBR RINT XINT DMA CPU RSR Expand Compress REVT XEVT RSR:Receive Shift Register接收移位寄存器 RBR:Receive Bufer Register接收缓冲寄存器 DRR:Data Receive Register数据接收寄存器 XSR:Transmit Shift Register发送移位寄存器 DXR:Data Transmit Register数据发送寄存器 接收器: 接收位-时钟CLKR采样接收同步信号FSR,若满足条件,则表示接收数据帧已同步,接收器开始接收串行数据DR上的串行数据位流。 接收位-时钟CLKR的沿采样串行数据DR,并将其串行移位进接收移位寄存器RSR中,一旦接收到一个完整的数据元素(8、12、16、20、24或32位),则RSR中的值被拷贝到接收缓冲寄存器RBR中(仅在RBR不满时),然后RBR被拷贝到DRR中(除非DRR还没有被CPU或DMA/EDMA控制器读走),并设置RINT信号请求CPU读接DRR或REVT信号请求DMA/EDMA读DRR。 接收器继续连续不断地接收下一个数据元,直到整个数据流接收完成,然后等待下一次接收同步事件。 发送器: 待发送的数据由CPU或DMA/EDMA控制器写入DXR寄存器中,如果XSR中没有数据,则DXR中的数据被拷贝到XSR寄存器中,否则直到XSR寄存器中的最后一位被串行移出到DX引脚上时,DXR中的值才被拷贝到XSR中。并设置XINT信号请求CPU写下一个数据到DXR中或请求DMA/EDMA写下一个数据到DXR中。 发送位-时钟CLKX采样发送同步信号FXR,若满足条件,则表示发送数据帧已同步,发送器开始向串行数据DX上发送串行数据位流 发送位-时钟CLKX的沿将发送移位寄存器中XSR中的数据串行移出到串行数据DX上,一旦发送完成一个完整的数据元素(8、12、16、20、24或32位),则DXR中的值拷贝到XSR中。 发送器继续连续不断地发送下一个数据元,直到整个数据流发送完成,然后等待下一次发送同步事件。
11
McBSP的数据通道 数据通道完成数据的发送和接收。 CPU或 DMA控制器向DXR写入待发送的数据,从DRR读取接收到的数据
XSR: 发送移位寄存器 RSR: 接收移位寄存器 RBR: 接收缓冲寄存器 数据通道完成数据的发送和接收。 CPU或 DMA控制器向DXR写入待发送的数据,从DRR读取接收到的数据 写入DXR的数据通过XSR移位输出至DX管脚。 DR管脚上接收到的数据先移位进入RSR,然后被复制到RBR中,RBR再将数据复制到DRR中,最后等候CPU或 DMA控制器将数据读走 DXR 外设总线 EDMA总线 McBSP0 018C 0004H H~ 33FF FFFFH McBSP1 H H~ 37FF FFFFH DRR 外设总线 EDMA总线 McBSP0 018C 0000H H~ 33FF FFFFH McBSP1 H H~ 37FF FFFFH 多级缓冲结构使片内的数据读写和外部的数据通信同时进行
12
McBSP的控制通道 控制通道完成的任务包括内部时钟产生、帧同步信号产生、对这些信号的控制以及多通道的选择等
控制通道还负责产生中断信号送往CPU,产生同步事件通知DMA控制器等 缩写 McBSP控制寄存器名 McBSP0 McBSP1 SPCR 串口控制寄存器 018C 0008H H RCR 接收控制寄存器 018C 000CH CH XCR 发送控制寄存器 018C 0010H H SRGR 采样率发生器寄存器 018C 0014H H MCR 多通道控制寄存器 018C 0018H H RCER 接收通道使能寄存器 018C 001CH CH XCER 发送通道使能寄存器 018C 0020H H PCR 管脚控制寄存器 018C 0024H H
13
串口控制寄存器(SPCR)的各个控制位 名字 字段 控制内容 FREE 25 SOFT 24 /FRST 23 帧同步发生器复位 /GRST
22 采样率发生器复位 RINTM 4~5 接收中断模式 XINTM 20~21 发送中断模式 RSYNCERR 3 接收同步错误 XSYNCERR 19 发送同步错误 /XEMPTY 18 发送移位寄存器(XSR)空 名字 字段 控制内容 RFULL 2 接收移位寄存器(RSR)满,出错状态 RRDY 1 接收准备好 XRDY 17 发送准备好 /RRST 接收复位 /XRST 16 发送复位 DLB 15 数据链路回馈模式 RJUST 13~14 接收数据的符号扩展以及调整模式 CLKSTP 11~12 时钟的停止模式,用于SPI模式中 ZDXENA 7 DX管脚使能,仅用于C6211/C6711
14
接收控制寄存器(RCR)和 发送控制寄存器(XCR)的各个控制位
名字 字段 控制内容 RPHASE 31 接收1帧中的相位数 XPHASE 发送1帧中的相位数 RFRLEN(1/2) 8~14/ 24~30 接收帧中,phase 1/phase 2的长度 XFRLEN(1/2) 发送帧中,phase 1/phase 2的长度 R WDLEN(1/2) 5~7/ 21~23 接收帧的phase 1/phase 2中,数据单元的字长 X WDLEN(1/2) 发送帧的phase 1/phase 2中,数据单元的字长 名字 字段 控制内容 RCOMPAND 19~20 接收压控模式 XCOMPAND 发送压控模式 RFIG 18 接收帧信号忽略 XFIG 发送帧信号忽略 RDATDLY 16~17 接收数据延迟 XDATDLY 发送数据延迟 RWDREVRS 4 32bit 数据的接收顺序取反 XWDREVRS 32bit 数据的发送顺序取反
15
采样率发生器寄存器(SRGR) 的各个控制位
名字 字段 控制内容 GSYNC 31 采用外部时钟时(CLKM=0),采样率发生器的时钟同步 CLKSP 30 选择产生CLKG和FSG信号时,对应CLKS的边沿极性 CLKSM 29 选择采样率发生器的输入时钟源 FSGM 28 当FSXM=1时,选择采样率发生器产生发送帧同步的方式 FPER 16~27 帧周期 FWID 8~15 帧信号的脉冲宽度 CLKGDV 0~7 采样率发生器时钟的分频因子
16
管脚控制寄存器(PCR) 的各个控制位 名字 字段 控制内容 RIOEN 12 /RRST=0时,接收端的通用I/O模式 XIOEN 13
/XRST=0时,接收端的通用I/O模式 FSXM 11 发送帧同步模式 FSRM 10 接收帧同步模式 CLKRM 8 接收时钟模式 CLKXM 9 发送时钟模式 CLKS_STAT 6 在通用I/O模式下,CLKS管脚状态 DX_STAT 5 在通用I/O模式下,DX管脚状态 DR_STAT 4 在通用I/O模式下,DR管脚状态 FSRP 3 接收端的帧同步极性 FSXP 2 发送端的帧同步极性 CLKXP 1 发送时钟极性 CLKRP 接收时钟极性
17
帧同步信号和时钟的配置 CLKR/CLKX:接收/发送串行数据流的同步时钟;
帧同步信号FSR和FSX:定义一批数据(一个数据单元/帧)传输的开始 可以设置的参数: (1)FSR, FSX, CLKX, CLKR的极性;(2)选择单相帧或二相帧;(3)定义每相中数据单元的个数;(4)定义每相中1个数据单元的位数;(5)帧同步信号是否触发开始新的串行数据流;(6)帧同步信号与第1个数据位之间的延迟,可以是0/1/2bit延迟。(7)接收数据的左右调整,进行符号扩展或是填充0 A0 A1 B7 B6 B5 B4 B3 B2 B1 B0 CLKR/CLKX FSR/FSX DR/DX 帧同步信号和时钟信号操作实例
18
(1)FSR, FSX, CLKX, CLKR的极性设置
管脚控制寄存器(PCR)的FS(R/X)M位设置帧同步脉冲由内部采样率发生器输出或是由外部输入; CLK(R/X)M位设置收发时钟信号是由内部采样率发生器输出或是由外部输入。 FSRM=FSXM=0, 帧同步信号FSR和FSX由外部输入。McBSP在内部时钟的CLKR_int和CLKX_int的下降沿处检测这些信号。到达DR引脚的接收数据也在CLKR_int的下降沿处被采样。内部时钟信号或由来自CLK(R/X)引脚的外部源驱动,或由McBSP的采样率发生器时钟(CLKG)驱动 FSRM=FSXM=1, 帧同步信号FSR和FSX由采样率发生器输出。它们在内部时钟的CLKR_int和CLKX_int的上升沿处产生(变为有效状态)。 在CLKX_int的上升沿处DX引脚上的数据输出
19
FSR, FSX, CLKX, CLKR的极性由PCR寄存器的FS(R/X)P、 CLK(R/X)P位配置
所有串口的内部帧同步信号是高电平有效的。 串口被配置为外部帧同步(FSR/FSX为McBSP的输入),并且FSRP=FSXP=0,外部有效(低电平)的帧同步信号在被送到接收信号(FSR_int)和发送信号(FSX_int)之前反相 如果内部同步被选择(FSR/FSX为输出并且GSYNC=0),则FSRP=FSXP=1时,内部有效(高电平)的同步信号在被送到FS(R/X)引脚之前被反相。 发送端: CLKXP设置用于移位和输出发送数据的信号边沿。数据总是在CLKX_int上升沿被发送 (1)CLKXP=1,外部时钟被选择(CLKXM=0和CLKX为输入):CLKX上的外部下降沿触发输入时钟在送到发送器之前被反相为一个上升边沿触发时钟。
20
(2)CLKXP=1,内部时钟被选择(CLKXM=1和CLKX为输出):内部时钟(上升边沿触发)CLKX上在被送到CLKX引脚之前被反相。
接收端: CLKRP设置用于采样接收数据的时钟边沿。接收数据总是在CLKR_int下降沿被采样 (1)CLKRP=1,外部时钟被选择(CLKRM=0和CLKR为输入引脚):CLKR上的外部上升沿触发输入时钟在被送到接收器之前被反相为下降沿时钟。 (2)CLKRP=1,内部时钟被选择(CLKRM=1和CLKR为输出):内部下降沿触发时钟在被送到CLKR引脚之前被反相为上升沿时钟。 在相同的时钟(内部或外部)用于向接收器和发送器提供时钟的系统中,CLKRP=CLKXP。接收器使用与发送器相反的边沿,以确保在边沿附近的数据有效的设置和保持时间
21
采样率发生器:可以为McBSP产生时钟和帧同步信号
三级分频器产生内部的数据时钟CLKG和帧信号FSG (1) 时钟分频(CLKGDV):控制CLKG与采样率发生器时钟源的分频关系 CLKG频率=采样率发生器输入时钟的频率/(CLKGDV+1) (C621x/C671xDSP使用CPU时钟/2作为采样率发生器的内部时钟源) (2) 帧周期(FPER):控制帧脉冲的周期=(FPER+1)CLKG (3)帧脉冲宽度(FWID):控制帧脉冲宽度=(FWID+1)CLKG
23
(2)帧同步的相位:选择单相帧或二相帧 帧同步有效表示1帧串行数据传输的开始。由帧同步引导的数据流可以有2个相位:相位1和相位2
由RCR和XCR寄存器中的(R/X)PHASE字段(31位)中可设置每帧包含的相位个数。 (R/X)PHASE=0,表示单相帧 由RCR和XCR寄存器中的(R/X)FRLEN(1/2)字段设置传输的数据单元个数。 由RCR和XCR寄存器中的(R/X) WDLEN(1/2)字段设置传输的每个数据单元的位数。 每帧最多传输的数据单元个数对于单相帧是128,对于双相帧是256。数据单元的字长可以是8/12/16/20/24/32位。 例
24
(3)定义每相中数据单元的个数:帧长度(R/X)FRLEN(1/2)
由RCR和XCR寄存器中的(R/X)FRLEN(1/2)字段设置传输的数据单元个数。 (R/X)FRLEN(1/2)字段为7位,由它控制的每帧数据单元个数定位为(R/X)FRLEN(1/2)+1,因此最大个数是128 例: (R/X)FRLEN1= b; (R/X)FRLEN2= b;
25
(4)定义每相中1个数据单元的位数 : 数据单元的字长(R/X)WDLEN(1/2)(5~7和21~23位)
由RCR和XCR寄存器中的(R/X) WDLEN(1/2)字段设置传输的每个数据单元的位数(字长)。 (R/X) WDLEN(1/2) 数据单元的字长 (bit) 000 8 001 12 010 16 (R/X) WDLEN(1/2) 数据单元的字长 (bit) 011 20 100 24 101 32 对于单相帧,(R/X) WDLEN2的值无意义 数据打包:可以灵活地设置帧长度及数据单元字长组合,完成同样的数据传输任务。可以将多个短字长的数据合并为1个长字长的数据传输,这种操作称为数据打包 传输的总数据量是一样的。但总线操作的次数是未打包的1/4,减少了串口传输数据所占用的总线时间
26
(R/X)PHASE=0:单相帧 (R/X)FRLEN1= b:每帧中含4个数据单元 (R/X)WDLEN1=000b:数据单元字长8位 4个8位数据单元构成的单相帧 (R/X)PHASE=0:单相帧 (R/X)FRLEN1=0b:每帧中含一个数据单元 (R/X)WDLEN1=0b:数据单元字长32位 1个32位数据单元构成的单相帧
27
(5)数据延迟: (R/X)CR寄存器中的(R/X)DATDLY
定义:帧同步有效后,一般是在其后的第1个时钟周期启动该帧的数据传输。如果需要,数据接收/发送的起始时刻相对于帧信号的起始点可以存在一定延迟,这种延迟称为数据延迟 由(R/X)CR寄存器中的(R/X)DATDLY字段(16~17位)分别设置接收和发送的数据延迟。延迟范围可以是0~2个传输时钟周期: (1) 0位数据延迟:接收或发送的数据就必须在同一个串行时钟周期中准备好 (2) 1位数据延迟:接收或发送的数据都是在帧同步有效后1个周期后出现。常用的设置 (3) 2位数据延迟:常用的设置;每帧数据流由1bit帧标志位引导,该帧标志位出现在1bit数据延迟后,因此有效数据出现在2bit数据延迟后;串口在接收时自动从数据流中去掉帧标志位
28
数据延迟控制 2bit数据延迟,丢弃帧标志位
29
McBSP的标准模式传输操作 将串口的各个寄存器设置为需要的值后可以进行收发操作。假设串口的设置为:
(1) (R/X)PHASE=0,单相帧 (2) (R/X)FRLEN1= b:每帧1个数据单元 (3) (R/X)WDLEN1=000b:数据单元字长8位 (4) (R/X)FRLEN2和(R/X)WDLEN2字段无效,可以设为任意值 (5) CLK(R/X)P=0: 时钟下降沿处接收数据,上升沿处发送数据 (6) FS(R/X)P=0:帧同步信号高有效 (7) (R/X)DATDLY=01b:1bit 数据延迟
30
(1) 数据的接收 一旦接收帧同步信号FSR变有效,其有效状态会在第1个接收时钟CLKR的下降沿处被检测到,然后DR管脚上的数据会在经过一定的数据延迟后(在RDATDLY中设置)依次移位进入接收移位寄存器RSR 若RBR为空,则在每个数据单元接收的末尾,CLKR时钟上升沿处,RSR中的内容会被复制到RBR中。这一个复制操作会在下一个时钟下降沿处触发状态位RRDY置1,标志接收数据寄存器DDR已准备好,CPU或EDMA控制器可以读取数据。当数据被读走后,RRDY自动变无效
31
(2) 数据的发送 检测到发送帧同步信号FSX有效后,发送到移位寄存器XSR中的数据经过一定的数据延迟后(在XDATDLY中设置),开始依次移位输出到DR管脚上 在每个数据单元发送的末尾,CLKX时钟上升沿处,如果DXR中已经准备好新的数据,DXR中的新数据会自动复制到XSR中。DXR-XSR复制操作会在下一个CLKX下降沿处激活XRDY位,表示可以向发送数据寄存器DXR写入新的数据,CPU或EDMA控制器写入数据后,XRDY自动变无效
32
(3) 帧信号的最高频率 帧频率=传输时钟频率/帧同步信号之间的传输时钟周期数 最大帧频率=传输时钟频率/每帧数据的位数
减少帧同步脉冲的间隔将增大帧频率。随着发送帧频率的增加,相邻数据帧之间的空闲时间间隔将减小至0,此时帧同步脉冲之间的最小时钟周期数代表了每帧传输的bit数,得到最大的帧信号频率 最大帧频率=传输时钟频率/每帧数据的位数 McBSP运行于最大帧频率下时,相邻帧传输的数据位是连续的,位与位之间没有空闲间隔。对于1位的数据延迟,帧同步脉冲将和前一帧的最后1bit数据传输交迭在一起
33
McBSP的忽略帧同步的传输操作 (R/X)CR寄存器中的(R/X)FIG位可控制数据收发是否识别帧同步信号:可以在最大帧频率下的传输中进行数据封装,或是在传输中忽略不需要的帧同步脉冲 RFIG 0(不忽略) 一旦出现了帧同步信号,将迫使串口放弃当前数据的接收,使RSR丢弃收到的有用的数据,同时SPCR中的RSYNCERR状态位被置1,开始新的数据接收 1 将忽略这些多余的帧同步信号 XFIG 突然出现的FSX脉冲将强制串口放弃当前的发送任务,XPCR中的XSYNCERR状态位被置1,当前数据的发送被打断,并重新初始化发送端口 不理会这些帧同步信号
34
(R/X)FIG=0:不忽略帧同步 (R/X)FIG=1:忽略帧同步
35
利用帧同步忽略位(R/X)FIG,进行数据打包
优化总线存取效率;将总线I/O时间降为原来的1/4 最大帧频率下每帧传输一个8bit数据 最大帧频率下利用(R/X)FIG=1将多帧数据封装传输
36
-律/A-律硬件压扩 是ITU的G.711协议PCM编码方式的一部分。
-律压扩允许14bit 的动态范围;A-律压扩允许13bit 的动态范围; 为了更好地实现压扩,CPU或EDMA控制器与McBSP之间传输的数据至少应当是16bit的数据 -律/A-律格式都是将数据编码为8位的码元。因此,串口的(R/X)WDLEN(1/2)控制位必须设置为0,以表明8位的串行数据流。使能压扩模块时,若1帧中任何一个相位的数据单元长度小于8位,数据压扩仍将按照8位长度进行 使能压扩时[(R/X)CR中的(R/X)COMPAND位],发送按照指定的压扩率进行编码,接收数据将解码为补码形式 ITU: International Telecommunications Union 国际电信联盟 PCM:Pulse Code Modulation脉冲码调制
37
数据压扩流程图 DXR中的压扩数据 压扩数据的格式 DRR中数据数据的调整 值 不用关心这些位 LAW 16 SPCR中的REJUST位
1 2 15 LAW16 U率扩展 3 A率扩展 不用关心这些位 LAW 16 15 16 31 DXR中的压扩数据 压扩数据的格式 SPCR中的REJUST位 DRR位 00 Law16 01 符号位 10 11 保留 DRR中数据数据的调整
38
数据通道 控制通道 禁止(未使能) 使能 输出 屏蔽
39
多通道传输接口 McBSP对多通道串行传输具有很强的接口控制能力
1帧串行数据流代表1组时分复用的数据流。 McBSP传输的一帧数据流最多可以包含128个数据单元,多通道模式最多可以一次使能其中32个通道进行发送或接收 (1) 对于接收,如果某个数据单元未被使能 ①收到该数据单元的最后1bit后,RRDY标志不会被置1 ②收到该数据单元的最后1bit后,RBR的内容不会被复制到DRR中。因此,对于这个数据单元来说,RRDY状态不会变有效,也不会产生中断或同步事件
41
(2) 对于发送,如果某个数据单元未被使能 ①DX处于高阻态 ②相关数据单元发送结束后,不会自动触发该数据的DXR到XSR 的拷贝操作 ③有关数据单元发送结束时,/XEMPTY和XRDY标志都不受影响 (3)对一个被使能的发送数据单元 用户可以进一步控制其数据是输出或是被屏蔽。如果数据被屏蔽,即使对应的发送通道已被使能,DX管脚仍然输出高阻态
42
多通道的控制 用于多通道的控制寄存器有: 多通道控制寄存器MCR:控制子帧(1帧数据共8个子帧)的选择以及输出的屏蔽
设置MCR的RMCM位为1和XMCM位为非0,可以独立地为接收和发送使能多通道模式 (2) 发送通道使能寄存器XCER:控制子帧中每一个发通道(1个子帧包含16个数据通道)的使能 (3) 接收通道使能寄存器RCER:控制子帧中每一个收通道(1个子帧包含16个数据通道)的使能
43
多通道控制寄存器MCR的各个控制位的意义
名称 位段 控制意义 RMCM 多通道选择接收使能; RMCM=0,使能所有的通道接收; RMCM=1,禁止所有的数据单元,需要用RP(A/B)BLK位和RCER中相应的位来选择接收的通道 XMCM 17~16 多通道选择发送使能; (00:多通道操作被禁止 ;其他情况01,10,11被使能) XMCM=00,使能所有的数据单元,没有屏蔽; XMCM=01,默认情况下所有的数据单元被禁止,因此也被屏蔽。需要用XP(A/B)BLK和XCER中相应的位来选择需要的发送通道,选中的通道不被屏蔽 XMCM=10,默认情况下所有的数据单元被使能,但是都被屏蔽。由XP(A/B)BLK和XCER中相应的位来选择需要的发送通道将不被屏蔽 XMCM=11,默认情况下所有的数据单元被禁止,因此也被屏蔽。需要用RP(A/B)BLK和RCER中相应的位来选择需要的发送通道,选中的通道不被屏蔽。这应用于收发对称操作模式中
44
名称 位段 控制意义 (R/X)CBLK 4~2/ 20~18 当前接收/发送的子帧; 000:0号子帧,数据单元0~15; 001:1号子帧,数据单元16~31; 010:2号子帧,数据单元32~47; 011:3号子帧,数据单元48~63; 100:4号子帧,数据单元64~79; 101:5号子帧,数据单元80~95; 110:6号子帧,数据单元96~111; 111:7号子帧,数据单元112~127; (R/X)PBBLK 8~7/24~23; 选择接收/发送的B 组子帧 00:1号子帧,数据单元16~31; 01:3号子帧,数据单元48~63; 10:5号子帧,数据单元80~95; 11:7号子帧,数据单元112~127; (R/X)PABLK 6~5/ 22~21; 选择接收/发送的A 组子帧 00:0号子帧,数据单元0~15; 01:2号子帧,数据单元32~47; 10:4号子帧,数据单元64~79; 11:6号子帧,数据单元96~111;
45
接收/发送通道使能寄存器(R/X)CER的各个控制位的意义
名称 位段 控制意义 RCEAn 0n 15 0~15 接收通道使能:使能/禁止偶数子帧(A组子帧)中的第n个通道的数据单元被接收 XCEAn 发送通道使能:使能/禁止偶数子帧(A组子帧)中的第n个通道的数据单元被发送 16~31 接收通道使能:使能/禁止奇数子帧(B组子帧)中的第n个通道的数据单元被接收 发送通道使能:使能/禁止奇数子帧(B组子帧)中的第n个通道的数据单元被发送
46
多通道的使能与屏蔽 1帧数据最多包含128个数据单元,每个数据单元对应1个传输通道。这128个数据单元被分为8个子帧(0~7号),每个子帧包括16个连续的数据单元。 将偶数位置的子帧0,2,4,6合称为A组子帧,奇数位置的子帧1,3,5,7合称为B组子帧 一次最多可以有32个数据单元(通道)被选择使能。发送和接收可以独立地进行子帧的选择使能
47
发送数据的屏蔽完成功能是在被使能数据单元对应的发送周期内,将DX管脚仍置于高阻状态。在某些多通道串行传输的应用中,如果需要采用对称的接收/发送来获得软件上的一些好处,可以利用这一功能来禁止发送端在某些周期中向串行总线输出数据。 对于接收,多个接收端之间不会产生串行总线的竞争,因此不涉及屏蔽的概念。 多通道的选择使能操作由MCR寄存器中的(R/X)P(A/B)BLK字段和(R/X)CER寄存器共同完成。 在(R/X)PABLK和(R/X)PBBLK中选择了2个子帧,共32个数据单元(通道)后,只有当(R/X)CER寄存器中相应的位同时置1,选择的这32个数据传输通道才真正被选择使能 例:在以下条件下, 所有XMCM位的值情况下McBSP引脚信号的时序 (R/X)PHASE=0:多通道的单相帧被使能 FRLEN1=01b:4单元帧 WDLEN1=任意有效的串行单元长度
48
发送的4个数据单元都经过了“写入DXR”和“DXR-XSR拷贝”的阶段,最后出现在DX管脚上
(1) XMCM=00(多通道操作被禁止使能所有的数据单元,没有屏蔽) 只有被选择并使能的通道,其对应数据单元(E1, E3)才会进行“DXR-XSR拷贝” ,并出现在DX管脚上 (2) XMCM=01(使能多通道操作。禁止并屏蔽所有的数据单元的发送输出) XPABLK=00b(A组子帧中的0号子帧被选择) XCER=1010b(使能该子帧中第1,3号数据通道进行发送)
49
发送的4个数据单元都完成了“写入DXR”和“DXR-XSR拷贝”的阶段;但只有E1和E3才会真正出现在DX管脚上,其余通道数据的输出均被屏蔽
(3) XMCM=10(使能多通道操作。所有的通道都被使能发送数据) XPABLK=00b; XCER=1010b (4) XMCM=11(使能多通道操作。所有的通道都被禁止和屏蔽 RPABLK=00b(统一选择发送和接收需要的子帧); XPABLK=xb (无效) RCER=1010b (1,3数据单元被接收) XCER=1000b (3数据单元被发送)
50
SPI协议下的McBSP操作 SPI (Serial Protocol Interface)是一个利用4根信号线的串口接口协议,包括主/从两种模式 4个接口信号: (1) 串行数据输入MISO(主设备输入,从设备输出) (2) 串行数据输出MOSI(主设备输出,从设备输入) (3)移位时钟SCK (Shift Clock) (4)低电平有效的从设备使能信号SS (Slave Signal) SPI的最大特点 由主设备时钟信号的出现与否来确定主/从设备间的通信。一旦检测到主设备的时钟信号,就开始传输数据。时钟信号无效后,传输结束。在这期间,从设备必须被使能(SS信号保持有效) SPI和McBSP之间的两种配置
51
时钟工作模式 SPI模式的时钟停止方式设置 CLKSTP CLKXP 0X X 禁止时钟停止模式,使能为非SPI模式 10
(时钟停止模式位,SPCR寄存器中的12~11位) CLKXP (发送时钟极性位;PCR寄存器中的1位) 时钟工作模式 0X X 禁止时钟停止模式,使能为非SPI模式 10 传输无效期间时钟为低,没有延迟。McBSP在CLKX上升沿发送数据,在CLKR下降沿接收数据 11 传输无效期间时钟为低,有延迟。McBSP在CLKX上升沿的前半个周期发送数据,在CLKR下降沿接收数据 1 传输无效期间时钟为高,没有延迟。McBSP在CLKX下降沿发送数据,在CLKR上升沿接收数据 传输无效期间时钟为高,有延迟。McBSP在CLKX下降沿的前半个周期发送数据,在CLKR上升沿接收数据
52
(1) CLKXP=10b时的SPI传输 (2) CLKXP=11b时的SPI传输 ①McBSP为主设备(CLKXM=1)时, 则MOSI=DX; McBSP为从设备(CLKXM=0)时, 则MOSI=DR; ②McBSP为主设备(CLKXM=1)时, 则MISO=DR; McBSP为从设备(CLKXM=0)时, 则MISO=DX;
53
(1) McBSP作为 SPI的主设备(Master)
由McBSP内部的采样率发生器产生时钟CLKX和从设备使能信号 FSX。因此,CLKX应配置为输出(CLKXM=1),FSX配置为输出(FSXM=1)并连接到从设备上的从设备使能(SS)输入。 每个单元的DXR到XSR传输产生从设备使能FSX(SRGR的FSGM=1)。因此,为了在SPI主设备模式下接收一个单元,McBSP必须同时发送一个单元(写DXR),以便产生必需的从设备使能FSX。 在MxBSP开始将数据移位输出到DX引脚之前,FSX需要声明为低电平,以便使能从设备。因此,XDATDLY和RDATDLY位必须编程为1。当McBSP为SPI主设备时,XDATDLY的值为0或2会产生不确定的操作,并且RDATDLY的值为0会使接收的数据移位不正确。
54
作为SPI的主设备,McBSP通过内部的采样率发生器产生CLKX和FSX。用户需要设备SRGR寄存器中的CLKSM位来选择CPU时钟或外部时钟输入(CLKS)作为采样率发生器的时钟源。对SRGR寄存器中的CLKGDV(时钟倍率)编程来产生CLKX,按照需要的SPI数据传输速率来编程。McBSP内部会产生一个连续的CLKX时钟,然后在经过门限制后输出到外部接口,从而实现传输接口所需要的时钟停止模式。因此在McBSP,对于发送和接收的内部操作而言,时钟信号实际上是连续的。选择时钟停止模式时,SRGR寄存器中的帧发生器位段(FPER和FWID)无意义
55
(2) McBSP作为 SPI的从设备(Slave)
当McBSP作为SPI从设备时,由外部的主设备产生所需的主控时钟信号CLKX和从设备使能信号 FSX。因此, McBSP 的CLKX引脚和FSX引脚配置为输入引脚 (CLKXM=FSXM=0),串口按照主控时钟进行数据同步传输。输入的CLKX和FSX信号同时也分别作为McBSP内部接收端的CLKR和FSR信号。在进行数据传输之前,外部主设备必须先将FSX信号设置为有效的低电平。 作为SPI从设备时,MxBSP的(R/X)CR寄存器中的(R/X)DATDLY位必须设置为0,以保证发送的第一个数据能够出现在DX引脚上。 (R/X)DATDLY=0也保证了对于接收,一旦检测到串行时钟CLKX有效,就可以立即接收数据
56
尽管CLKX信号是由外部主设备产生,McBSP内部的采样率发生器仍必须被使能,并被设置为相应的SPI模式。因为McBSP需要利用内部的采样率发生器产生的时钟信号,对输入CLKS 和FSX信号进行同步化处理。采样率发生器应当设置为采用CPU时钟作为采样率发生器的时钟源(SRGR的CLKSM=1),以及必须保证内部的CLKG信号频率(由SRGR的CLKGDV位控制)至少是SPI数据传输率的8倍。比如,可以令CLKGDV=1,将采样率发生器设置为最大的速率
57
SPI初始化 McBSP工作于SPI模式下,必须进行下列初始化步骤: (1)将SPCR寄存器中/XRST和/RRST置为1,收发端口复位
(2) 在McBSP保持复位的状态下,设置有关的寄存器为需要的值,先设置CLKSTP=0xb,禁止始终停止模式 (3)置SPCR寄存器中/GRST=1,采样率发生器退出复位状态,开始工作 (4)等待2个时钟周期,以确保McBSP在初始化过程中,内部能够正确地同步。 (5)设置SPCR寄存器中CLKSTP为需要的值。 (6)根据由CPU还是由EDMA来访问McBSP,分别进行下面的设置: 如果是由CPU进行访问,置/XRST=/RRST=1,使能收发,SPCR寄存器中其他设置值不变 如果是由EDMA进行访问,先对EDMA进行初始化,启动EDMA,使之等候同步事件,然后再置/XRST=/RRST=1,使串口退出复位状态 (7)发送端开始工作,接收端需要等待2个数据时钟周期
58
McBSP引脚用作通用I/O口 下面两个条件允许McBSP引脚(CLKX, FSX, DX, CLKR, FSR, CLKS)用作通用目标I/O引脚: (1) SPCR寄存器中的/XRST=/RRST=0,收发端口处于复位状态 (2) PCR寄存器中的(R/X)IOEN=1,串口设置为通用I/O模式
59
McBSP引脚用作通用I/O口的管脚设置
作为输出 输出值来自于 作为输入 输入值反映在 CLKX /XRST=0 XIOEN=1 CLKXM=1 CLKXP CLKXM=0 FSX FSXM=1 FSXP FSXM=0 DX 始终是输出 DX_STAT 不用作输入 N/A CLKR /RRST=0 RIOEN=1 CLKRM=1 CLKRP CLKRM=0 FSR FSRM=1 FSRP FSRM=0 DR 不用作输出 始终是输入 DR_STAT CLKS /XRST=/RRST=0, CLKS_STAT
Similar presentations