Drew 参考MPC860用户手册对SCC实现串口模式步骤进行分析解释.
具体的寄存器定义参看MPC860用户手册。
下面SCC UART模式初始化为9600波特率,8数据位,无奇偶校验,停止位1,25M系统频率.以BRG1和SCC2为例.控制器设置RTS2,CTS2
和 CD2;
-
设置端口A,使能 TXD2 和 TXD2.置位 PAPAR[12,13],清空
PADIR[12,13] 和 PAODR[12,13].
-
设置端口C,使能 RTS2,CTS2和CD2.置位 PCPAR[14] 和
PCSO[8,9], 清空 PCPAR[8,9]和 PCDIR[8,9,14].
-
设置 BRG1.写 0x010144 到 BRGC1.不使用位
DIV16, 分配器divider为162 (十进制).这样使得 BRG1 的时钟为
16* 位变化。
-
用串行接口连接 BRG1 到 SCC2.清空
SICR[R2CS,T2CS]. SICR = 0x11;
-
初始化 SDMA 配置寄存器 (SDCR =
0x0001为正常方式)。
-
连接 SCC2 到 NMSI,清空 SICR[SC2]
-
在 SCC2 参数 RAM 中写 RBASE 和 TBASE
指向双口 RAM 中的 RxBD 和 TxBD 表。假定双口 RAM
起始位置的RxBD 后紧接的是 一个 TxBD, 写 RBASE 为 0x0000,
TBASE 为 0x0008。
-
在 CPCR 中写 0x0041,执行 SCC2 的 INIT RX AND TX PARAMS
命令。这个命令用新的 RBASE 和 TBASE 值来更新串行通道的
RBPTR 和 TBPTR。
-
写 0x10 到 RFCR 和 TFCR。
-
在 MRBLR 中设定每个 Rx buffer
的最大字节数值。如果是 16个字节,则 MRBLR =
0x0010。
-
在 参数 RAM 中 MAX_IDL 写入 0x0000
**********来失效最大的 空闲*******。the maximum idle
-
设置 BRKCR 为 0x0001,这样 STOP
TRANSMIT 命令************send only one break character.
-
清空参数 RAM 中的 PAREC, FRMEC, NOSEC,
和 BRKEC
-
UADDR1 和 UADDR2. 不使用它们。
-
清空 TOSEQ, 不使用。
-
写 0x8000 到 CHARACTER1, 不使用。
-
写 0xC0FF 到 RCCM. 不使用。
-
初始化 RxBD. 假定 Rx buffer
在主存储区 0x0000_1000 位置。写 0xB000 到 RxBD[Status 和
Control], 写 0x0000 到 RxBD[Data Length] (可选),写 0x00001000 到
RxBD[Buffer Pointer].
-
初始化 TxBD. 假定 Tx buffer
在主存储区 0x0000_2000 位置并包含16个8位字符。写 0xB000
到 TxBD[Status 和 Control], 写 0x0010 到 TxBD[Data Length],写
0x00002000 到 RxBD[Buffer Pointer].
-
在 SCCE2 中写入 0xFFFF
来清空任何以前的事件previous events。
-
在 SCCM2 中写入 0x0003 来使能enable TX
和 RX 中断。
-
在 CPM 中断屏蔽寄存器中(CIMR)中写入
0x2000_000,放开允许 SCC2 产生的一个系统中断。CICR
也应该初始化。
-
写 0x0000_0020 到 GSM_H2
来设置一个小的 RX FIFO 宽。
-
写 0x0002_8004 到 GSM_L2
来设置发送和接受的 16* 采样****************sampling,写
0x0002_8004到 CTS 和 CD 来自动控制发送和接受(DIAG
位),SCC 为 UART 模式。注意 发送器(ENT)和接收器
(ENR)还没有被使能。24. Write 0x0002_8004 to GSMR_L2 to con辡ure
16? for transmit and
receive, /CTS and /CD to automatically control transmission and reception (DIAG
bits), and the SCC for UART mode. Notice that the transmitter (ENT) and receiver
(ENR) have not been enabled yet.
-
设 PSMR2 位 0xB000
来设置用/CTS,8位字符,无奇偶校验,一个停止位和异步 SCC
UART 操作自动流程控制。
-
写 0x0002_8034 到 GSMR_L2
来使能发送器和接收器。这样保证 ENT 和 ENR
肯定能被使能。
Note that after 16 bytes are sent, the transmit buffer is closed. Additionally, the
receive
buffer is closed after 16 bytes are received. Data received after 16 bytes causes a busy
(out-of-buffers) condition because only one RxBD is prepared.