590 likes | 854 Views
C6000 的片上外设. TMS320C6713 Floating-Point DSP. EMIF. Level 1 Program Cache 4K Bytes. McBSP 0. OR. McASP 0. C67x TM DSP Core. McBSP1. OR. Level 2 Cache/Memory 256K Bytes SRAM. IIC 1. Enhanced DMA Controller (EDMA) 16 Channel. HPI. OR. GPIO. Level 1 Data Cache 4K Bytes. McASP 1.
E N D
TMS320C6713 Floating-Point DSP EMIF Level 1 Program Cache 4K Bytes McBSP 0 OR McASP 0 C67xTM DSP Core McBSP1 OR Level 2 Cache/Memory 256K Bytes SRAM IIC 1 Enhanced DMA Controller (EDMA) 16 Channel HPI OR GPIO Level 1 Data Cache 4K Bytes McASP 1 IIC 0 2 Timers • C6713片上集成有丰富的外设: 2个McBSP 2个McASP 2个IIC总线 1个16位HPI接口 2个32位通用定时器Timer0和Timer1 1个通用I/O模块 GPIO
UART = Universal Asynchronous Receiver Transmitter,通用异步收发器 CODEC(立体声) DSP 麦克风输入 立体声输出 双路UART RS232/RS485/RS422 USB2.0 计算机USB口 立体声 输入
片上外设复用外部引脚 HPI和McASP1+GPIO复用引脚,这些引脚的功能选用由复位时HD14(HPI_EN)引脚的状态来确定: HD14=0,配置为McASP1+GPIO HD14=1,配置为HPI SEED-DEC6713模板上,引脚HD14片内上拉,片外通过跳针JP8下拉。缺省情况下,JP8短路,即SEED-DEC6713缺省配置McASP1+GPIO功能有效,HPI功能无效
片上外设复用外部引脚 Timer0+Timer1+McBSP0+McBSP1和McASP0+IIC1+IIC0复用引脚。这些引脚由片上设备配置寄存器DEVCFG (019C 0200~ 019C 02FF) 中的McBSP0DIS, McBSP1DIS, TOUT0SEL, TOUT1SEL等位来确定
多通道缓冲串口(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个通道的发送和接收
多通道缓冲串口(McBSP)概述 (7) 支持8/12/16/20/24/32bit的数据宽度 (8) 内置u-律和A-律压控硬件 (9) 对8bit 数据的传输,可选择LSB或MSB方式 (10)可设置帧同步信号和数据时钟信号的极性 (11)内部传输时钟和帧同步信号可编程程度高
数据通道 控制通道 McBSP的信号接口 McBSP接口信号 • CLKX:串行发送器位-时钟引脚 • FSX: 串行发送器帧同步引脚 • DX: 串行发送器数据引脚 • CLKR:串行接收器位-时钟引脚 • FSR: 串行接收器帧同步引脚 • DR: 串行接收器数据引脚 • CLKS:外部位-时钟输入引脚 RINT:接收中断,送往CPU XINT:发送中断,送往CPU REVT:接收同步事件,送往DMA控制器 XEVT:发送同步事件,送往DMA控制器 McBSP的内部结构框图
McBSP REVT DMA XEVT RINT CPU XINT Data Bus DRR DXR Expand Compress SPC RBR Control Logic RSR XSR DR FSR CLKR CLKX FSX DX McBSP结构与原理
McBSP的数据通道 DXR: 发送数据寄存器 DRR: 接收数据寄存器 XSR: 发送移位寄存器 RSR: 接收移位寄存器 RBR: 接收缓冲寄存器 • 数据通道完成数据的发送和接收。 • CPU或 DMA控制器向DXR写入待发送的数据,从DRR读取接收到的数据 • 写入DXR的数据通过XSR移位输出至DX管脚。 • DR管脚上接收到的数据先移位进入RSR,然后被复制到RBR中,RBR再将数据复制到DRR中,最后等候CPU或 DMA控制器将数据读走 多级缓冲结构使片内的数据读写和外部的数据通信同时进行
McBSP的控制通道 • 控制通道完成的任务包括内部时钟产生、帧同步信号产生、对这些信号的控制以及多通道的选择等 • 控制通道还负责产生中断信号送往CPU,产生同步事件通知DMA控制器等
接收控制寄存器(RCR)和发送控制寄存器(XCR)的各个控制位接收控制寄存器(RCR)和发送控制寄存器(XCR)的各个控制位
CLKR/CLKX FSR/FSX DR/DX A1 A0 B7 B6 B5 B4 B3 B2 B1 B0 帧同步信号和时钟的配置 CLKR/CLKX:接收/发送串行数据流的同步时钟; 帧同步信号FSR和FSX:定义一批数据(一个数据单元/帧)传输的开始 可以设置的参数: (1)FSR, FSX, CLKX, CLKR的极性;(2)选择单相帧或二相帧;(3)定义每相中数据单元的个数;(4)定义每相中1个数据单元的位数;(5)帧同步信号是否触发开始新的串行数据流;(6)帧同步信号与第1个数据位之间的延迟,可以是0/1/2bit延迟。(7)接收数据的左右调整,进行符号扩展或是填充0 帧同步信号和时钟信号操作实例
(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引脚上的数据输出
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上的外部下降沿触发输入时钟在送到发送器之前被反相为一个上升边沿触发时钟。
(2)CLKXP=1,内部时钟被选择(CLKXM=1和CLKX为输出):内部时钟(上升边沿触发)CLKX上在被送到CLKX引脚之前被反相。(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。接收器使用与发送器相反的边沿,以确保在边沿附近的数据有效的设置和保持时间
采样率发生器:可以为McBSP产生时钟和帧同步信号采样率发生器:可以为McBSP产生时钟和帧同步信号 • 三级分频器产生内部的数据时钟CLKG和帧信号FSG (1) 时钟分频(CLKGDV):控制CLKG与采样率发生器时钟源的分频关系 CLKG频率=采样率发生器输入时钟的频率/(CLKGDV+1) (C621x/C671xDSP使用CPU时钟/2作为采样率发生器的内部时钟源) (2) 帧周期(FPER):控制帧脉冲的周期=(FPER+1)CLKG (3)帧脉冲宽度(FWID):控制帧脉冲宽度=(FWID+1)CLKG
(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位。 • 例
(3)定义每相中数据单元的个数:帧长度(R/X)FRLEN(1/2)(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=0000001b; (R/X)FRLEN2=0000010b;
(4)定义每相中1个数据单元的位数 :数据单元的字长(R/X)WDLEN(1/2)(5~7和21~23位) • 由RCR和XCR寄存器中的(R/X) WDLEN(1/2)字段设置传输的每个数据单元的位数(字长)。 • 对于单相帧,(R/X) WDLEN2的值无意义 数据打包:可以灵活地设置帧长度及数据单元字长组合,完成同样的数据传输任务。可以将多个短字长的数据合并为1个长字长的数据传输,这种操作称为数据打包 传输的总数据量是一样的。但总线操作的次数是未打包的1/4,减少了串口传输数据所占用的总线时间
(R/X)PHASE=0:单相帧 (R/X)FRLEN1=0000011b:每帧中含4个数据单元 (R/X)WDLEN1=000b:数据单元字长8位 4个8位数据单元构成的单相帧 (R/X)PHASE=0:单相帧 (R/X)FRLEN1=0b:每帧中含一个数据单元 (R/X)WDLEN1=0b:数据单元字长32位 1个32位数据单元构成的单相帧
(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数据延迟后;串口在接收时自动从数据流中去掉帧标志位
数据延迟控制 2bit数据延迟,丢弃帧标志位
McBSP的标准模式传输操作 将串口的各个寄存器设置为需要的值后可以进行收发操作。假设串口的设置为: (1) (R/X)PHASE=0,单相帧 (2)(R/X)FRLEN1=0000000b:每帧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 数据延迟
(1) 数据的接收 一旦接收帧同步信号FSR变有效,其有效状态会在第1个接收时钟CLKR的下降沿处被检测到,然后DR管脚上的数据会在经过一定的数据延迟后(在RDATDLY中设置)依次移位进入接收移位寄存器RSR 若RBR为空,则在每个数据单元接收的末尾,CLKR时钟上升沿处,RSR中的内容会被复制到RBR中。这一个复制操作会在下一个时钟下降沿处触发状态位RRDY置1,标志接收数据寄存器DDR已准备好,CPU或EDMA控制器可以读取数据。当数据被读走后,RRDY自动变无效
(2) 数据的发送 检测到发送帧同步信号FSX有效后,发送到移位寄存器XSR中的数据经过一定的数据延迟后(在XDATDLY中设置),开始依次移位输出到DR管脚上 在每个数据单元发送的末尾,CLKX时钟上升沿处,如果DXR中已经准备好新的数据,DXR中的新数据会自动复制到XSR中。DXR-XSR复制操作会在下一个CLKX下降沿处激活XRDY位,表示可以向发送数据寄存器DXR写入新的数据,CPU或EDMA控制器写入数据后,XRDY自动变无效
(3) 帧信号的最高频率 帧频率=传输时钟频率/帧同步信号之间的传输时钟周期数 减少帧同步脉冲的间隔将增大帧频率。随着发送帧频率的增加,相邻数据帧之间的空闲时间间隔将减小至0,此时帧同步脉冲之间的最小时钟周期数代表了每帧传输的bit数,得到最大的帧信号频率 最大帧频率=传输时钟频率/每帧数据的位数 McBSP运行于最大帧频率下时,相邻帧传输的数据位是连续的,位与位之间没有空闲间隔。对于1位的数据延迟,帧同步脉冲将和前一帧的最后1bit数据传输交迭在一起
McBSP的忽略帧同步的传输操作 (R/X)CR寄存器中的(R/X)FIG位可控制数据收发是否识别帧同步信号:可以在最大帧频率下的传输中进行数据封装,或是在传输中忽略不需要的帧同步脉冲
(R/X)FIG=0:不忽略帧同步 (R/X)FIG=1:忽略帧同步
利用帧同步忽略位(R/X)FIG,进行数据打包 优化总线存取效率;将总线I/O时间降为原来的1/4 最大帧频率下每帧传输一个8bit数据 最大帧频率下利用(R/X)FIG=1将多帧数据封装传输
-律/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位],发送按照指定的压扩率进行编码,接收数据将解码为补码形式
15 2 1 0 LAW16 U率扩展 值 0 15 3 1 0 LAW16 A率扩展 值 0 31 16 15 0 LAW 16 不用关心这些位 数据压扩流程图 DXR中的压扩数据 压扩数据的格式 DRR中数据数据的调整
数据通道 控制通道 禁止(未使能) 使能 输出 屏蔽
多通道传输接口 • McBSP对多通道串行传输具有很强的接口控制能力 • 多通道串行传输允许McBSP在单相帧的模式下,为发送和接收选择独立的数据通道(单元)。 • 1帧串行数据流代表1组时分复用的数据流。 • McBSP传输的一帧数据流最多可以包含128个数据单元,多通道模式最多可以一次使能其中32个通道进行发送或接收 (1) 对于接收,如果某个数据单元未被使能 ①收到该数据单元的最后1bit后,RRDY标志不会被置1 ②收到该数据单元的最后1bit后,RBR的内容不会被复制到DRR中。因此,对于这个数据单元来说,RRDY状态不会变有效,也不会产生中断或同步事件
(2) 对于发送,如果某个数据单元未被使能 ①DX处于高阻态 ②相关数据单元发送结束后,不会自动触发该数据的DXR到XSR 的拷贝操作 ③有关数据单元发送结束时,/XEMPTY和XRDY标志都不受影响 (3)对一个被使能的发送数据单元 用户可以进一步控制其数据是输出或是被屏蔽。如果数据被屏蔽,即使对应的发送通道已被使能,DX管脚仍然输出高阻态
多通道的控制 • 用于多通道的控制寄存器有: • 多通道控制寄存器MCR:控制子帧(1帧数据共8个子帧)的选择以及输出的屏蔽 设置MCR的RMCM位为1和XMCM位为非0,可以独立地为接收和发送使能多通道模式 (2) 发送通道使能寄存器XCER:控制子帧中每一个发通道(1个子帧包含16个数据通道)的使能 (3) 接收通道使能寄存器RCER:控制子帧中每一个收通道(1个子帧包含16个数据通道)的使能
接收/发送通道使能寄存器(R/X)CER的各个控制位的意义接收/发送通道使能寄存器(R/X)CER的各个控制位的意义
多通道的使能与屏蔽 • 1帧数据最多包含128个数据单元,每个数据单元对应1个传输通道。这128个数据单元被分为8个子帧(0~7号),每个子帧包括16个连续的数据单元。 • 将偶数位置的子帧0,2,4,6合称为A组子帧,奇数位置的子帧1,3,5,7合称为B组子帧 • 一次最多可以有32个数据单元(通道)被选择使能。发送和接收可以独立地进行子帧的选择使能
发送数据的屏蔽完成功能是在被使能数据单元对应的发送周期内,将DX管脚仍置于高阻状态。在某些多通道串行传输的应用中,如果需要采用对称的接收/发送来获得软件上的一些好处,可以利用这一功能来禁止发送端在某些周期中向串行总线输出数据。发送数据的屏蔽完成功能是在被使能数据单元对应的发送周期内,将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=任意有效的串行单元长度
发送的4个数据单元都经过了“写入DXR”和“DXR-XSR拷贝”的阶段,最后出现在DX管脚上发送的4个数据单元都经过了“写入DXR”和“DXR-XSR拷贝”的阶段,最后出现在DX管脚上 (1) XMCM=00(多通道操作被禁止使能所有的数据单元,没有屏蔽) 只有被选择并使能的通道,其对应数据单元(E1, E3)才会进行“DXR-XSR拷贝” ,并出现在DX管脚上 (2) XMCM=01(使能多通道操作。禁止并屏蔽所有的数据单元的发送输出) XPABLK=00b(A组子帧中的0号子帧被选择) XCER=1010b(使能该子帧中第1,3号数据通道进行发送)
发送的4个数据单元都完成了“写入DXR”和“DXR-XSR拷贝”的阶段;但只有E1和E3才会真正出现在DX管脚上,其余通道数据的输出均被屏蔽发送的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数据单元被发送)
SPI协议下的McBSP操作 • SPI (Serial Protocol Interface)是一个利用4根信号线的串口接口协议,包括主/从两种模式 • 4个接口信号: (1) 串行数据输入MISO(主设备输入,从设备输出) (2) 串行数据输出MOSI(主设备输出,从设备输入) (3)移位时钟SCK (Shift Clock) (4)低电平有效的从设备使能信号SS (Slave Signal) • SPI的最大特点 由主设备时钟信号的出现与否来确定主/从设备间的通信。一旦检测到主设备的时钟信号,就开始传输数据。时钟信号无效后,传输结束。在这期间,从设备必须被使能(SS信号保持有效) • SPI和McBSP之间的两种配置