|
各位MSP430高手:
我要用MSP430F449的UART0实现485串行通信,虽然网上有很多资料,在下也多方查找拜读,郁闷一周,仍未调通,今特求教坛中高手,给予指点。
硬件连接: F449的UART0的RX、TX分别通过电平转换芯片(5V-3.3V转换)与MAX487的相应管脚连接,MAX487的~RE/DE短接后,通过电平转换与F449的P2.6相连, F449通过P2.6控制MAX487的输入和输出.
时钟: 系统时钟采用外部晶阵32K, 设置MCLK为7.99M, SMCLK为7.99M. 串口的BRCLK采用了SMCLK. 故串口初始化部分如下:
UCTL0 |= SWRST; // U0 控制寄存器位
UCTL0 |= CHAR; // BIT4 字符长度选择 8 BITS
UTCTL0 = SSEL0 + SSEL1; // 选择系统子时钟SMCLK
URCTL0 = 0X00;
UBR00 = 0X40; // 波特率9600
UBR10 = 0X03;
UMCTL0 = 0X77; // 波特率调整控制寄存器
UCTL0 &= ~SWRST; // 选择发送时钟源置位
ME1 |= URXE0; // 使能RXD
IE1|=URXIE0;
IFG1=0X00;
P2SEL |= BIT4; // P2.4 UTXDO
P2SEL |= BIT5; // P2.5 URXDO
P2DIR |= BIT4; // P2.4 输出
P2DIR |= BIT6;
_EINT();
对于接收, 采用中断方式, 我在中断里设置断点, 来查看BUF中的信息. 发送采用主动查询方式.通过485模块与PC的COM连接,用串口调试助手来调式.
现存在主要问题:
无法正确的接收与发送信息, 如发送0X55, PC接收到的是0X18 0X00 0XED等信息, 也就是发送一个字符, 接收段收到3个字符.
接收时, 无论上位机发送什么信息, 都无规律地收到单个字符信息. 有时什么也收不到.
希望高手能对在下的硬件及软件配置提出建议或解决方案, 若有调试成功的, 希望能给在下以帮助.
非常感谢!
|
|