标签存档: UART

MSP430内部上拉导致UART无法使用的问题

今天使用串口进行调试,底层驱动是已经做好的,已经经过测试,可以直接使用,确认是没有问题的。
但是,调用底层驱动进行初始化、进行发送,没有数据发出。在确认串口的相关寄存器配置没有问题后,回到了IO口的配置。经过仔细查找发现在调用UART初始化函数之前,P3.4REN设置了1,即开启了P3.4的内部上拉。而板子上本身已经加了外部上拉。(我认为430的UART是不需要上拉的,但是这块板子上有上拉。)去掉对P3.4REN的设置后串口工作正常。 继续阅读 »

OKI8位单片机 ML610Q482 串口使用及系统时钟设置

关于波特率的设置
首先,需要选择一个用于波特率发送器的时钟源。
时钟源的选择由UA0MOD0寄存器的U0CK1和U0CK2决定,有三种选择LSCLK(32768Hz),LSCLK*2(65536Hz),HSCLK。
当选择HSCLK是,HSCLK又有多种可能。
首先,用于产生HSCLK的信号源有4种选择,RC oscillation,crystal/ceramic oscillation,built-in PLL oscillation,external clock input。由FCON0寄存器的OSCM1和OSCM0位决定。
然后,能够被系统和外围设备使用的HSCLK是经过一个分频系数分频后的,分频系数可以取1,2,4,8。由FCON0寄存器的SYSC0和SYSC1位控制,在PLL模式时分频系数最小为2。
然后,设置特率发生器的计数值。
计算公式如下:
UA0BRTH,L = (Clock frequency(Hz) / Baud rate(bps)) – 1
可以根据不同时钟,不同波特率要求自行计算波特率寄存器的值。
第三,发送数据的步骤:
U0EN = 0; //stop UART communications to set communicate mode
U0IO = 0; //set to transmit mode
for (i=0;i

MSP430_x2xx UART波特率设置方法

对于给定的时钟源,波特率有分频因子决定

 

 

很多情况下N是非整数,所以使用分频器和调整器两部分来组成波特率发生器,这样是分频因子尽量接近需要值。分频器完成分频功能,调整器的数据按每一位计算,将对应为的数据(0或1)加到每次分频计数器的分频值上。

若N大于或等于16,则可以通过设置UCOS16来启动 oversampling baud rate generation mode 。

具体的寄存器设置方法: 继续阅读 »

SPI I2C UART 区别与联系的总结

SPI:四线制,1. CLK 2.FRAM 3.RXD 4.TXD 协议:TI MOTOLOLA NATIONAL PSP
UART:标准三线制, 1.GND 2.RXD 3.TXD 协议:就听说过个MODBUS
摘自21ic论坛:http://bbs.21ic.com/viewthread.php?tid=123645&highlight=SPI%2BUART

第一个区别当然是名字:
SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS)
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器)

第二,区别在电气信号线上:
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。 继续阅读 »