59
1 C6000 的的的的的

C6000 的片上外设

  • Upload
    mills

  • View
    71

  • Download
    10

Embed Size (px)

DESCRIPTION

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. - PowerPoint PPT Presentation

Citation preview

Page 1: C6000 的片上外设

1

C6000 的片上外设

Page 2: C6000 的片上外设

2

• C6713 片上集成有丰富的外设:2 个 McBSP2 个 McASP2 个 IIC 总线1 个 16 位 HPI 接口2 个 32 位通用定时器 Ti

mer0 和 Timer11 个通用 I/O 模块 GPIO

McBSP1OR

TMS320C6713 Floating-Point DSP

C67xTM DSP

Core

Level 1 Program Cache

4K BytesOR

McBSP 0

2 Timers

Leve

l 2 C

ache

/Mem

ory

256K

Byt

es S

RA

M

Level 1 Data

Cache 4K Bytes

McASP 0

ORHPI

GPIO

EMIF

Enha

nced

DM

A C

ontr

olle

r(E

DM

A) 1

6 C

hann

el

IIC 1

IIC 0McASP 1

Page 3: C6000 的片上外设

3

立体声输入

DSP

CODEC( 立体声 )

立体声输出麦克风输入

双路UART

UART = Universal Asynchronous Receiver Transmitter, 通用异步收发器

RS232/RS485/RS422

USB2.0计算机 USB 口

Page 4: C6000 的片上外设

4

Page 5: C6000 的片上外设

5

片上外设复用外部引脚HPI 和 McASP1+GPIO 复用引脚,这些引脚的功能选用由复位时 HD14(HPI_EN) 引脚的状态来确定:HD14=0 ,配置为 McASP1+GPIO

HD14=1 ,配置为 HPI

SEED-DEC6713 模板上,引脚HD14 片内上拉,片外通过跳针 JP8 下拉。缺省情况下, JP8 短路,即 SEED-DEC6713 缺省配置 McASP1+GPIO 功能有效,HPI 功能无效

Page 6: C6000 的片上外设

6

片上外设复用外部引脚Timer0+Timer1+McBSP0+McBSP1 和 McASP0+IIC1+IIC0 复用引脚。这些引脚由片上设备配置寄存器 DEVCFG (019C 0200~ 019C 02FF) 中的 McBSP0DIS, McBSP1DIS, TOUT0SEL, TOUT1SEL 等位来确定

Page 7: C6000 的片上外设

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 个通道的发送和接收

Page 8: C6000 的片上外设

8

多通道缓冲串口 (McBSP) 概述(7) 支持 8/12/16/20/24/32bit 的数据宽度(8) 内置 u- 律和 A- 律压控硬件(9) 对 8bit 数据的传输,可选择 LSB 或 MSB 方式(10) 可设置帧同步信号和数据时钟信号的极性(11) 内部传输时钟和帧同步信号可编程程度高

Page 9: C6000 的片上外设

9

McBSP 的信号接口

McBSP 的内部结构框图

McBSP 接口信号 数据通道

控制通道

RINT :接收中断,送往 CPU

XINT :发送中断,送往 CPU

REVT :接收同步事件,送往 DMA 控制器XEVT :发送同步事件,送往 DMA 控制器

• CLKX :串行发送器位 - 时钟引脚• FSX : 串行发送器帧同步引脚• DX : 串行发送器数据引脚• CLKR :串行接收器位 - 时钟引脚• FSR : 串行接收器帧同步引脚• DR : 串行接收器数据引脚• CLKS :外部位 - 时钟输入引脚

Page 10: C6000 的片上外设

10

DXDR FSR CLKR CLKX FSX

Data Bus

SPCControl Logic

DRR DXR

XSR

RBR

RINT XINT

DMA

CPU

RSR

Expand Compress

REVT XEVT

McBSPMcBSP 结构与原理

Page 11: C6000 的片上外设

11

McBSP 的数据通道• 数据通道完成数据的发送和接收。• CPU 或 DMA 控制器向 DXR写入待发送的数据,从 DRR读取接收到的数据• 写入 DXR 的数据通过 XSR移位输出至 DX 管脚。• DR 管脚上接收到的数据先移位进入 RSR ,然后被复制到

RBR 中, RBR 再将数据复制到 DRR 中,最后等候 CPU或 DMA 控制器将数据读走

DXR 外设总线 EDMA 总线McBSP0 018C

0004H3000 0000H~ 33FF FFFFH

McBSP1 0190 0004H

3400 0000H~ 37FF FFFFH

多级缓冲结构使片内的数据读写和外部的数据通信同时进行

DXR: 发送数据寄存器DRR: 接收数据寄存器XSR: 发送移位寄存器RSR: 接收移位寄存器RBR: 接收缓冲寄存器

DRR 外设总线 EDMA 总线McBSP0 018C

0000H3000 0000H~ 33FF FFFFH

McBSP1 0190 0000H

3400 0000H~ 37FF FFFFH

Page 12: C6000 的片上外设

12

McBSP 的控制通道• 控制通道完成的任务包括内部时钟产生、帧同步信号产生、对这些信号的控制以及多通道的选择等• 控制通道还负责产生中断信号送往 CPU ,产生同步事件通知 DMA 控制器等缩写 McBSP 控制寄存器名 McBSP0 McBSP1SPCR 串口控制寄存器 018C 0008H 0190 0008HRCR 接收控制寄存器 018C 000CH 0190 000CHXCR 发送控制寄存器 018C 0010H 0190 0010HSRGR 采样率发生器寄存器 018C 0014H 0190 0014HMCR 多通道控制寄存器 018C 0018H 0190 0018HRCER 接收通道使能寄存器 018C 001CH 0190 001CHXCER 发送通道使能寄存器 018C 0020H 0190 0020HPCR 管脚控制寄存器 018C 0024H 0190 0024H

Page 13: C6000 的片上外设

13

串口控制寄存器 (SPCR) 的各个控制位名字 字段 控制内容FREE 25SOFT 24/FRST 23 帧同步发生器复位/GRST 22 采样率发生器复位RINTM 4~5 接收中断模式XINTM 20~21 发送中断模式RSYNCERR

3 接收同步错误XSYNCERR

19 发送同步错误/XEMPTY

18 发送移位寄存器(XSR) 空

名字 字段 控制内容RFULL 2 接收移位寄存器 (R

SR) 满,出错状态RRDY 1 接收准备好XRDY 17 发送准备好/RRST 0 接收复位/XRST 16 发送复位DLB 15 数据链路回馈模式RJUST 13~

14接收数据的符号扩展以及调整模式

CLKSTP 11~12

时钟的停止模式,用于 SPI 模式中ZDXENA 7 DX 管脚使能,仅用于 C6211/C6711

Page 14: C6000 的片上外设

14

接收控制寄存器 (RCR) 和发送控制寄存器 (XCR) 的各个控制位名字 字段 控制内容RPHASE

31 接收 1 帧中的相位数XPHASE

31 发送 1 帧中的相位数RFRLEN(1/2)

8~14/24~30

接收帧中, phase 1/phase 2 的长度

XFRLEN(1/2)

8~14/24~30

发送帧中, phase 1/phase 2 的长度

R WDLEN(1/2)

5~7/21~23

接收帧的 phase 1/phase 2 中,数据单元的字长

X WDLEN(1/2)

5~7/21~23

发送帧的 phase 1/phase 2 中,数据单元的字长

名字 字段 控制内容RCOMPAND

19~20 接收压控模式XCOMPAND

19~20 发送压控模式RFIG 18 接收帧信号忽略XFIG 18 发送帧信号忽略RDATDLY 16~17 接收数据延迟XDATDLY 16~17 发送数据延迟RWDREVRS

4 32bit 数据的接收顺序取反XWDREVRS

4 32bit 数据的发送顺序取反

Page 15: C6000 的片上外设

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 采样率发生器时钟的分频因子

Page 16: C6000 的片上外设

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 0 接收时钟极性

Page 17: C6000 的片上外设

17

帧同步信号和时钟的配置CLKR/CLKX :接收 / 发送串行数据流的同步时钟;帧同步信号 FSR 和 FSX :定义一批数据 ( 一个数据单元 /帧 ) 传输的开始可以设置的参数: (1)FSR, FSX, CLKX, CLKR 的极性;

(2) 选择单相帧或二相帧; (3) 定义每相中数据单元的个数; (4) 定义每相中 1 个数据单元的位数; (5) 帧同步信号是否触发开始新的串行数据流; (6) 帧同步信号与第 1个数据位之间的延迟,可以是 0/1/2bit 延迟。 (7) 接收数据的左右调整,进行符号扩展或是填充 0

A0A1 B7 B6 B5 B4 B3 B2 B1 B0

CLKR/CLKX

FSR/FSX

DR/DX

帧同步信号和时钟信号操作实例

Page 18: C6000 的片上外设

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 引脚上的数据输出

Page 19: C6000 的片上外设

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 上的外部下降沿触发输入时钟在送到发送器之前被反相为一个上升边沿触发时钟。

Page 20: C6000 的片上外设

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 。接收器使用与发送器相反的边沿,以确保在边沿附近的数据有效的设置和保持时间

Page 21: C6000 的片上外设

21

采样率发生器:可以为 McBSP 产生时钟和帧同步信号• 三级分频器产生内部的数据时钟 CLKG 和帧信号 FSG(1) 时钟分频 (CLKGDV) :控制 CLKG 与采样率发生器时钟源的分频关系CLKG 频率 = 采样率发生器输入时钟的频率 /(CLKGDV+1)(C621x/C671xDSP 使用 CPU 时钟 /2 作为采样率发生器的内部时钟源)(2) 帧周期 (FPER) :控制帧脉冲的周期 =(FPER+1)CLKG(3) 帧脉冲宽度 (FWID) :控制帧脉冲宽度 =(FWID+1)CLKG

Page 22: C6000 的片上外设

22

Page 23: C6000 的片上外设

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 位。• 例

Page 24: C6000 的片上外设

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=0000001b; (R/X)FRLEN2=0000010b;

Page 25: C6000 的片上外设

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 8001 12010 16

(R/X) WDLEN(1/2)

数据单元的字长(bit)

011 20100 24101 32

• 对于单相帧, (R/X) WDLEN2 的值无意义数据打包:可以灵活地设置帧长度及数据单元字长组合,完成同样的数据传输任务。可以将多个短字长的数据合并为 1 个长字长的数据传输,这种操作称为数据打包

传输的总数据量是一样的。但总线操作的次数是未打包的 1/4,减少了串口传输数据所占用的总线时间

Page 26: C6000 的片上外设

26

4 个 8 位数据单元构成的单相帧

1 个 32 位数据单元构成的单相帧

(R/X)PHASE=0:单相帧(R/X)FRLEN1=0b:每帧中含一个数据单元(R/X)WDLEN1=0b: 数据单元字长 32 位

(R/X)PHASE=0:单相帧(R/X)FRLEN1=0000011b: 每帧中含 4 个数据单元(R/X)WDLEN1=000b: 数据单元字长 8 位

Page 27: C6000 的片上外设

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 数据延迟后;串口在接收时自动从数据流中去掉帧标志位

Page 28: C6000 的片上外设

28

数据延迟控制

2bit 数据延迟,丢弃帧标志位

Page 29: C6000 的片上外设

29

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 数据延迟

Page 30: C6000 的片上外设

30

(1) 数据的接收一旦接收帧同步信号 FSR变有效,其有效状态会在第 1 个接收时钟CLKR 的下降沿处被检测到,然后 DR 管脚上的数据会在经过一定的数据延迟后 ( 在 RDATDLY 中设置 )依次移位进入接收移位寄存器 RSR若 RBR 为空,则在每个数据单元接收的末尾, CLKR 时钟上升沿处,

RSR 中的内容会被复制到 RBR 中。这一个复制操作会在下一个时钟下降沿处触发状态位 RRDY 置 1 ,标志接收数据寄存器 DDR已准备好,CPU 或 EDMA 控制器可以读取数据。当数据被读走后, RRDY自动变无效

Page 31: C6000 的片上外设

31

(2) 数据的发送检测到发送帧同步信号 FSX 有效后,发送到移位寄存器 XSR 中的数据经过一定的数据延迟后 ( 在 XDATDLY 中设置 ) ,开始依次移位输出到 DR 管脚上

在每个数据单元发送的末尾, CLKX 时钟上升沿处,如果 DXR 中已经准备好新的数据, DXR 中的新数据会自动复制到 XSR 中。 DXR-XSR复制操作会在下一个 CLKX 下降沿处激活 XRDY 位,表示可以向发送数据寄存器 DXR 写入新的数据, CPU 或 EDMA 控制器写入数据后,XRDY自动变无效

Page 32: C6000 的片上外设

32

(3) 帧信号的最高频率帧频率 = 传输时钟频率 / 帧同步信号之间的传输时钟周期数减少帧同步脉冲的间隔将增大帧频率。随着发送帧频率的增加,相邻数据帧之间的空闲时间间隔将减小至 0 ,此时帧同步脉冲之间的最小时钟周期数代表了每帧传输的 bit 数,得到最大的帧信号频率

最大帧频率 = 传输时钟频率 / 每帧数据的位数McBSP运行于最大帧频率下时,相邻帧传输的数据位是连续的,位与位之间没有空闲间隔。对于 1 位的数据延迟,帧同步脉冲将和前一帧的最后 1bit 数据传输交迭在一起

Page 33: C6000 的片上外设

33

McBSP 的忽略帧同步的传输操作(R/X)CR 寄存器中的 (R/X)FIG 位可控制数据收发是否识别帧同步信号:可以在最大帧频率下的传输中进行数据封装,或是在传输中忽略不需要的帧同步脉冲RFIG 0(不忽略 )

一旦出现了帧同步信号,将迫使串口放弃当前数据的接收,使 RSR丢弃收到的有用的数据,同时 SPCR 中的 RSYNCERR 状态位被置 1 ,开始新的数据接收1 将忽略这些多余的帧同步信号

XFIG 0(不忽略 )突然出现的 FSX 脉冲将强制串口放弃当前的发送任务, XPCR 中的 XSYNCERR 状态位被置 1 ,当前数据的发送被打断,并重新初始化发送端口

1 不理会这些帧同步信号

Page 34: C6000 的片上外设

34

(R/X)FIG=0 :不忽略帧同步

(R/X)FIG=1 :忽略帧同步

Page 35: C6000 的片上外设

35

利用帧同步忽略位 (R/X)FIG ,进行数据打包优化总线存取效率;将总线 I/O 时间降为原来的 1/4

最大帧频率下每帧传输一个 8bit 数据 最大帧频率下利用 (R/X)FIG=1将多帧数据封装传输

Page 36: C6000 的片上外设

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 位 ] ,发送按照指定的压扩率进行编码,接收数据将解码为补码形式

Page 37: C6000 的片上外设

37

数据压扩流程图值 0

01215LAW16

U 率扩展值 0

01315LAW16

A 率扩展 压扩数据的格式

不用关心这些位 LAW 160151631

DXR 中的压扩数据

SPCR 中的REJUST 位 DRR 位

31 16 15 0

00 0 Law16

01 符号位 Law16

10 Law16 0

11 保留

DRR 中数据数据的调整

Page 38: C6000 的片上外设

38

数据通道

控制通道

禁止(未使能)

使能输出屏蔽

Page 39: C6000 的片上外设

39

多通道传输接口• McBSP 对多通道串行传输具有很强的接口控制能力• 多通道串行传输允许 McBSP 在单相帧的模式下,为发送和接收选择独立的数据通道(单元)。• 1 帧串行数据流代表 1组时分复用的数据流。• McBSP 传输的一帧数据流最多可以包含 128 个数据单元,多通道模式最多可以一次使能其中 32 个通道进行发送或接收(1) 对于接收,如果某个数据单元未被使能①收到该数据单元的最后 1bit 后, RRDY 标志不会被置 1②收到该数据单元的最后 1bit 后, RBR 的内容不会被复制到 DRR 中。因此,对于这个数据单元来说, RRDY 状态不会变有效,也不会产生中断或同步事件

Page 40: C6000 的片上外设

40

Page 41: C6000 的片上外设

41

(2) 对于发送,如果某个数据单元未被使能①DX处于高阻态②相关数据单元发送结束后,不会自动触发该数据的 DXR 到 XSR 的拷贝操作③有关数据单元发送结束时, /XEMPTY 和 XRDY 标志都不受影响

(3) 对一个被使能的发送数据单元用户可以进一步控制其数据是输出或是被屏蔽。如果数据被屏蔽,即使对应的发送通道已被使能, DX 管脚仍然输出高阻态

Page 42: C6000 的片上外设

42

多通道的控制• 用于多通道的控制寄存器有:(1) 多通道控制寄存器 MCR :控制子帧 (1 帧数据共 8 个子帧 ) 的选择以及输出的屏蔽

设置 MCR 的 RMCM 位为 1 和 XMCM 位为非 0 ,可以独立地为接收和发送使能多通道模式(2) 发送通道使能寄存器 XCER :控制子帧中每一个发通道 (1 个子帧包含 16 个数据通道 ) 的使能(3) 接收通道使能寄存器 RCER :控制子帧中每一个收通道 (1 个子帧包含 16 个数据通道 ) 的使能

Page 43: C6000 的片上外设

43

多通道控制寄存器 MCR 的各个控制位的意义名称 位段 控制意义RMCM 0 多通道选择接收使能;

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 中相应的位来选择需要的发送通道,选中的通道不被屏蔽。这应用于收发对称操作模式中

Page 44: C6000 的片上外设

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 ;

Page 45: C6000 的片上外设

45

接收 / 发送通道使能寄存器 (R/X)CER 的各个控制位的意义名称 位段 控制意义RCEAn0n 15

0~15 接收通道使能:使能 /禁止偶数子帧 (A组子帧 ) 中的第n 个通道的数据单元被接收

XCEAn0n 15

0~15 发送通道使能:使能 /禁止偶数子帧 (A组子帧 ) 中的第n 个通道的数据单元被发送

RCEAn0n 15

16~31 接收通道使能:使能 /禁止奇数子帧 (B组子帧 ) 中的第n 个通道的数据单元被接收

XCEAn0n 15

16~31 发送通道使能:使能 /禁止奇数子帧 (B组子帧 ) 中的第n 个通道的数据单元被发送

Page 46: C6000 的片上外设

46

多通道的使能与屏蔽• 1 帧数据最多包含 128 个数据单元,每个数据单元对应 1个传输通道。这 128 个数据单元被分为 8 个子帧 (0~7 号 ) ,每个子帧包括 16 个连续的数据单元。• 将偶数位置的子帧 0,2,4,6合称为 A组子帧,奇数位置的子帧 1,3,5,7合称为 B组子帧• 一次最多可以有 32 个数据单元 ( 通道 ) 被选择使能。发送和接收可以独立地进行子帧的选择使能

Page 47: C6000 的片上外设

47

• 发送数据的屏蔽完成功能是在被使能数据单元对应的发送周期内,将 DX 管脚仍置于高阻状态。在某些多通道串行传输的应用中,如果需要采用对称的接收 / 发送来获得软件上的一些好处,可以利用这一功能来禁止发送端在某些周期中向串行总线输出数据。• 对于接收,多个接收端之间不会产生串行总线的竞争,因此不涉及屏蔽的概念。• 多通道的选择使能操作由 MCR 寄存器中的 (R/X)P(A/B)B

LK 字段和 (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= 任意有效的串行单元长度

Page 48: C6000 的片上外设

48

(1) XMCM=00( 多通道操作被禁止使能所有的数据单元,没有屏蔽 )

发送的 4 个数据单元都经过了“写入 DXR” 和“ DXR-XSR 拷贝”的阶段,最后出现在 DX 管脚上

(2) XMCM=01( 使能多通道操作。禁止并屏蔽所有的数据单元的发送输出 )XPABLK=00b(A组子帧中的 0 号子帧被选择)XCER=1010b( 使能该子帧中第 1 , 3 号数据通道进行发送 )

只有被选择并使能的通道,其对应数据单元 (E1, E3) 才会进行“ DXR-XSR 拷贝” ,并出现在 DX管脚上

Page 49: C6000 的片上外设

49

(3) XMCM=10( 使能多通道操作。所有的通道都被使能发送数据 )XPABLK=00b ; XCER=1010b

发送的 4 个数据单元都完成了“写入DXR” 和“ DXR-XSR 拷贝”的阶段;但只有 E1 和 E3 才会真正出现在 DX管脚上,其余通道数据的输出均被屏蔽

(4) XMCM=11( 使能多通道操作。所有的通道都被禁止和屏蔽RPABLK=00b(统一选择发送和接收需要的子帧 ) ; XPABLK=xb (无效 )

RCER=1010b (1 ,3 数据单元被接收 )XCER=1000b (3 数据单元被发送 )

Page 50: C6000 的片上外设

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 之间的两种配置

Page 51: C6000 的片上外设

51

SPI 模式的时钟停止方式设置CLKSTP( 时钟停止模式位, SPCR 寄存器中的 12~11 位 )

CLKXP( 发送时钟极性位; PCR 寄存器中的 1 位 )

时钟工作模式

0X X 禁止时钟停止模式,使能为非 SPI 模式10 0 传输无效期间时钟为低,没有延迟。 McBSP 在 CLKX上升沿发送数据,在 CLKR 下降沿接收数据11 0 传输无效期间时钟为低,有延迟。 McBSP 在 CLKX上升沿的前半个周期发送数据,在 CLKR 下降沿接收数据10 1 传输无效期间时钟为高,没有延迟。 McBSP 在 CLKX下降沿发送数据,在 CLKR 上升沿接收数据11 1 传输无效期间时钟为高,有延迟。 McBSP 在 CLKX下降沿的前半个周期发送数据,在 CLKR 上升沿接收数据

Page 52: C6000 的片上外设

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 ;

Page 53: C6000 的片上外设

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 和 RDA

TDLY 位必须编程为 1 。当 McBSP 为 SPI主设备时, XDATDLY 的值为 0 或 2会产生不确定的操作,并且 RDATDLY 的值为 0会使接收的数据移位不正确。

Page 54: C6000 的片上外设

54

• 作为 SPI 的主设备, McBSP 通过内部的采样率发生器产生 CLKX 和 FSX 。用户需要设备 SRGR 寄存器中的 CLKSM 位来选择 CPU 时钟或外部时钟输入 (CLKS) 作为采样率发生器的时钟源。对 SRGR 寄存器中的 CLKGDV( 时钟倍率 ) 编程来产生 CLKX ,按照需要的 SPI 数据传输速率来编程。 McBSP 内部会产生一个连续的 CLKX 时钟,然后在经过门限制后输出到外部接口,从而实现传输接口所需要的时钟停止模式。因此在 McBSP ,对于发送和接收的内部操作而言,时钟信号实际上是连续的。选择时钟停止模式时, SRGR 寄存器中的帧发生器位段 (FPER 和 FWID)无意义

Page 55: C6000 的片上外设

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 有效,就可以立即接收数据

Page 56: C6000 的片上外设

56

• 尽管 CLKX 信号是由外部主设备产生, McBSP 内部的采样率发生器仍必须被使能,并被设置为相应的 SPI 模式。因为 McBSP需要利用内部的采样率发生器产生的时钟信号,对输入 CLKS 和 FSX 信号进行同步化处理。采样率发生器应当设置为采用 CPU 时钟作为采样率发生器的时钟源 (SRGR 的 CLKSM=1) ,以及必须保证内部的 CLKG信号频率 ( 由 SRGR 的 CLKGDV 位控制 ) 至少是 SPI 数据传输率的 8倍。比如,可以令 CLKGDV=1, 将采样率发生器设置为最大的速率

Page 57: C6000 的片上外设

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 个数据时钟周期

Page 58: C6000 的片上外设

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 模式

Page 59: C6000 的片上外设

59

McBSP 引脚用作通用 I/O 口的管脚设置管脚 设置为通用 I/O 口 作为输出 输出值来自于 作为输入 输入值反映在CLKX /XRST=0

XIOEN=1CLKXM=1 CLKXP CLKXM=0 CLKXP

FSX /XRST=0XIOEN=1

FSXM=1 FSXP FSXM=0 FSXP

DX /XRST=0XIOEN=1

始终是输出 DX_STAT 不用作输入 N/A

CLKR /RRST=0RIOEN=1

CLKRM=1 CLKRP CLKRM=0 CLKRP

FSR /RRST=0RIOEN=1

FSRM=1 FSRP FSRM=0 FSRP

DR /RRST=0RIOEN=1

不用作输出 N/A 始终是输入 DR_STAT

CLKS /XRST=/RRST=0,RIOEN=1

不用作输出 N/A 始终是输入 CLKS_STAT