主题中讨论的其他器件:C2000WARE
我有 SCI-B 设置来发送和接收 FIFO 我使用 SCIA 和 C 成功、但 B 不会从 RXBUF 写入 TXBUF。 我有这些引脚多路复用器和 GMUX、并使用跳线将这些端口连接在一起:
EALLOW;
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;
GpioCtrlRegs.GPAGMUX2.bit.GPIO18=0;
GpioCtrlRegs.GPAGMUX2.bit.GPIO19 = 0;
EDIS;
txbuf 可以写入、但 RXBUF 无法接收该结果、并且停留在初始化时分配的值上(76)这些是我的设置配置
FIFO
void scib_fifo_init()
{ //初始化 TX 和 RX 的先进先出缓冲器
SCIFFTX.ALL = 0xE040;
/*位15=1: SCI FIFO 可恢复发送或接收。 SCIRST 应为1、即使自动波特率逻辑正常工作也是如此。
位14 = 1:启用 SCI FIFO 增强功能
位13 = 1: 重新使能发送 FIFO 操作
位12-8 = 0:FIFO 为空
位7 = 0:TXFIFO 中断没有发生、只读位
位6 = 1: 写入0对 TXFIFINT 标志位无影响、位回读0
位5 = 0:基于 TXFFIL 匹配(小于或等于)的 TX FIFO 中断被禁用
位4-0 = 0:TXFFIL N/A
*
ScibRegs.SCIFFRX.ALL = 0x2044;
/*位15=0: 接收 FIFO 没有溢出、只读位
位14 = 0:写入0对 RXFFOVF 标志位无影响、位回读0
位13 = 1: 重新启用接收 FIFO 操作
位12-8 = 0:FIFO 为空
位7 = 0:未发生 RXFIFO 中断、只读位
位6 = 1: 写入1以清除位7中的 RXFFINT 标志
位5 = 0: 基于 RXFFIL 匹配(大于或等于)的 RX FIFO 中断将被禁用
位4-0 = 0:RXFFIL N/A
*
ScibRegs.SCIFFCT.all = 0x0;
/*bit 15 = 0:自动波特率检测没有完成。 "A"、"A"字符未成功接收。
位14 = 0: 写入0对 ABD 标志位没有影响。 位读回0。
位13 = 0: 禁用自动波特对齐
位12-8 = 0:保留
位7-0 = 0:FFTXDLY 复位在 RX 和 TX FIFO 上的字符检测之间设置暂停0->0波特延迟
*
}
初始化
{
// 1停止位, 无回送,无奇偶校验,8个字符位,异步模式,
//空闲线协议
ScibRegs.SCICCR.all =0x0007;
//为 SCI 通信将字符长度设置为8位
ScibRegs.SCICTL1.all =0x0003;
//位0 = 1:发送接收到的字符到 SCIRXEMU 和 SCIRXBUF
//位1 = 1:发送器被启用
ScibRegs.SCICTL2.bit.TXINTENA=1;
//TXINTENA 启用 TX 中断并与 CCTL2位0相关联
ScibRegs.SCICTL2.bit.RXBKINTENA=1;
//RXBKINTENA 启用 RX 中断并与 CCTL2位1相关联
ScibRegs.SCIHBAUD.ALL = 0x0002;
ScibRegs.SCILBAUD.ALL = 0x008B;
ScibRegs.SCICTL1.all =0x0023;
//从复位中撤回 SCI