MSP430常见问题之通信类
Q1: 430 串口中,有个R/D 控制线,在接收上位机的数据,但本身的数据有无发送完毕不知道啊,什么时候才可置低R/d 位来接收数据啊?好像430 没有发送完中断标志
A1:字节主动发送,一般都能发出去,除非你的的时钟有问题.可以用程序检测,半双工通讯,可以多发送一个字节,作为判断,当最后个字节(作为判断用)写入发送缓存产生中断时,在中断里改变R/D状态。
Q 2: 我想做个6个节点的网络,最远的距离为2mF20 系列的USI 做3 线SPI 模式用是否能满足要求?能否提供其他低端的430芯片?
A2:SPI 是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议..但作为芯片间的通信,距离不能太远,如果你想做2m,建议你用串口232 去做!
Q3:从PC端,用串口调试助手发送一个字MSP430 可以接收到,但是我发送一个字符串MSP430 就接收不到了,不知道为何,程序如下:
#pragma vector=UART0RX_VECTOR
__interrupt void usart0_rx(void)
{
RecBuf[revcont] = RXBUF0; // RXBUF0 to TXBUF0
revcont++;
}
用上面的中断程序接收到后,发送RecBuf 到PC串口....我如果发送0x01 0x02 到MSP430后,再从MSP430发送到PC,我接收到的是0xE0
A3: 查查你的程序,在中断程序中的revcont++; 会不灰导致RecBuf[]越界;发送0x01 0x02 0x03 0x04 在串口调试助手里应该是01 02 03 04 并点以十六进制传输.否则PC 将会以ASCII 码形式发出.
Q4:无线通讯系统,增加通信距离都有哪些方法呢?最有效最常用的
A4:加放大器,换增益更大的天线,降低通讯速率,降低载波频率,加大发射功率,基本就这些了。主要是硬件上,发射功率和你的高频电路负载的匹配
Q5:异步串口通信分别什么时候产生发送中断和接收中断?
A5:应该是先中断,在中断中发送数据,接收数据是一个字节收完才产生中断的。
Q6:低功耗的产品应该是不接XT2直接用DCO的吗?用msp149,产品用到UART不知道DCO稳定否?当波特率9600,msp149的DCO最大频率多少啊?
A6:低功耗产品建议使用内部的DCO,1 系列的DCO 稳定度比起晶振确实不是很好,但是如果只是给UART提供时钟源,而工作的波特率是9600 的话,还是可以胜任的,149 的DCO 频率最大能达到多少还是看149的数据手册吧,内有详细介绍。
Q12:MSP430 SPI 或UART 的速度?
A12:在SPI 主模式下,通信速率可以达到4Mbps,而在UART 模式下,速率也可达到2Mbps。USART 可进行配置,以便同时支持同步(SPI) 与异步(UART) 操作,并且可从几个内部及外部时钟源(与CPU 时钟无关)中进行选择。在SPI 主模式下,USART 的运行速率可达到应用时钟的1/2。例如,如果使用8MHz 时钟,则SPI 主模式的传输速率可达到4Mbps。在UART 模式下,实现可靠通信至少要求每位3 或4 个时钟。例如,8MHz 时钟除以4 可以支持高达2Mbps 的速率。MSP430xxxx 用户指南中提供了有关USART 功能的完整说明,其网址是:http://www.ti.com/msp430。