接了个项目,使用MC80F7708,用其UART与无线模块通信。
调试了两天,7708的UART很成问题,TX0、RX0在R50、R51脚与LCD的seg0、seg1复用。我的配置是这样的:
PSR0 = 0x0C; // IO IO, IO, RXE, TXE, IO -(UART的功能使能在R0端口选择寄存器,但管脚在R5,高电平使能)
……
R5IO = 0xFA; // out, out,out,out, out,in(ACK0),out(TX0),in(RX0),
R5 = 0x00; //
R5PSR = 0x00; // seg7, seg6, seg5, seg4, seg3, seg2, seg1(TX0), seg0(TX0)(R5端口选择寄存器,全零使能LCD)
……
IENH = 0x0C; // x, INT2(6), INT1(5), INT0(4),RX(3),TX(2),x,x,使能UART中断
/************UART 初始化******************/
void Uart_Initial(void)
{
ASIMR0 = 0xC0; // 1100_0000b TX and RX mode,no parity,1bit stop 接口方式寄存器
BRGCR0 = BAUD_2400; // default BAUD = 2400 bps 波特率发生器寄存器,BAUD_2400=0x5a,fmain=4MHz
f_OnRxUart = OFF; //
iTemp = RXBR0; // clear overrun error !!!
}
现在的问题是,给传输移位寄存器(TXSR0)赋值能正常触发串口中断,但是用逻辑分析仪监测TX0端口没有数据。
逻辑分析仪用串口调试软件测试没问题。初步判断是UART端口配置不正确,导致数据没有输出。
应该如何配置UART口,请用过现代MC80F7708的大虾指点指点。(附MC80F7708DATASHEET) |