主题中讨论的其他器件:MAX3232、
工具/软件:Code Composer Studio
我正在使用 TMS320F28377S 微控制器。 我尝试使用串行通信。 我使用控制套件 "sci_echoback"中提供的示例代码。 微控制器在 TX 上生成输出,但我认为波特率不匹配(我在 PuTTy 上对此进行测试)。 我使用此代码。这会在 PuTTY 上提供垃圾值。 (PuTTY 设置是正确的、我检查一下、然后通过短接 TX、Rx 引脚 RS232、max3232 用于 TTL 到 RS232转换器)。 波特率 I set 为2400、日期位= 8、奇偶校验=无、停止位= 1、硬件控制=无。我使用 C2000 Launchpad XL、晶振频率= 10MHz、时钟为200MHz。
void main (void)
{
InitSysCtrl();
InitGpio();
GPIO_SetupPinMux (15、GPIO_MUX_CPU1、2);
GPIO_SetupPinOptions (15、GPIO_INPUT、GPIO_PushPull);
GPIO_SetupPinMux (14、GPIO_MUX_CPU1、2);
GPIO_SetupPinOptions (14、GPIO_OUTPUT、GPIO_异 步);
Dint;
InitPieCtrl();
//
//禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
//
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
scia_echoback_init (); //初始化用于 echoback 的 SCI
scia_fifo_init(); //初始化 SCI FIFO
while (1)
{
scia_xmit ('s'); us (100);
MS (10);
}
}
void scia_fifo_init (void)
{
//
//注意:SCIA 外设的时钟被打开
//在 InitSysCtrl()函数中
//
EALLOW;
SciaRegs.SCIFFTX.ALL = 0xE040;
SciaRegs.SCIFFRX.ALL = 0x2044;
SciaRegs.SCIFFCT.all = 0x0;
返回;
}
//
// scia_xmit -从 SCI 发送一个字符
//
void scia_xmit (int a)
{
while (ScibRegs.SCIFFTX.bit.TXFFST!= 0){}
ScibRegs.SCITXBUF.ALL =A;
}
//
// scia_msg -通过 SCIA 发送消息
//
void scia_msg (char * msg)
{
int i;
I = 0;
while (msg[i]!='\0')
{
scia_xmit (msg[i]);
i++;
}
}
//
// scia_fifo_init -初始化 SCI FIFO
//
//文件结束
//
void scia_echoback_init (void)
{
EALLOW;
//
//注意:SCIA 外设的时钟被打开
//在 InitSysCtrl()函数中
//
ScibRegs.SCICCR.all = 0x0007; // 1停止位, 无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议
ScibRegs.SCICTL1.all = 0x0003; //启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、睡眠、TXWAKE
//ScibRegs.SCICTL2.all = 0x0003;
//ScibRegs.SCICTL2.bit.TXINTENA=1;
//ScibRegs.SCICTL2.bit.RXBKINTENA=1;
//
// SCIA 为9600波特
//@LSPCLK = 50MHz (200MHz SYSCLK) HBAUD = 0x02且 LBAUD = 0x8B。
//@LSPCLK = 30MHz (120MHz SYSCLK) HBAUD = 0x01且 LBAUD = 0x86。
//
ScibRegs.SCIHBAUD.ALL = 0x000B; // 0x0002;
ScibRegs.SCILBAUD.ALL = 0x009E; // 0x008b;
ScibRegs.SCICTL1.ALL = 0x0023; //从复位中撤回 SCI
}