串行通信的特点:数据以字节为单位,按位的优先级来进行传送
通信涉及通信协议
通信协议按照时间来分:可分为同步通信和异步通信
按照发送数据的位宽来分可分为:串行通信和并行通信
串行通信又分为单工,半双工,全双工
同步通信是面向比特的传输
异步通信是面向字符的传输,需要事先约定波特率
异步通信的空闲格式为1,发送器通过0来表示传送开始,随后传送数据位,再然后发送一到两位的停止位,来停止。
从开始位到停止位称为一帧。
因为没发送一个数据都要发送一个开始位,所以称为异步
串行通信的波特率:
位长:称为位的持续时间,其倒数就是单位时间内传递的位数。人们把每秒传送的位数称为波特率
看了一下数据手册UART 的配置寄存器好多
看了一下书:
UART寄存器初始化步骤:
使能UART时钟
设置UART的服用引脚
先禁止UART发送和接收,以便后续配置UART
设置UART的数据格式,奇偶校验位–停止位数固定为1
设置UART的波特率
如果需要FIFO,还要使能FIFO
使能UART发送和接收
—配置过程好复杂··
PLL锁相环,可以将晶振输出频率Fosc,倍增几倍,以满足高速运算需要。 在不连接PLL时,CPU时钟和晶振时钟相同,即CCLK = Fosc。 当使能PLL并连接,则CCLK = Fosc * M,M为倍频数。
锁相环和锁频环的锁定以及捕获、同步等概念是有区别的。对锁相环而言,所谓锁定是指VCO频率与同步信号频率完全一致,但允许有稳定相位误差;而对锁频环而言,则在锁定时可允许VCO与同步信号有小的稳态频率误差。
关于晶振:
时钟电路
MK60 的时钟电路包括两部分,一个是芯片的主晶振,用于产生芯片和外设所需要的工作时钟;另外一个是实时时钟RTC 的时钟电路,实时时钟(RTC-Real Time Clock)提供一套计数器在系统上电和关闭操作时对时间进行测量,RTC 消耗的功率非常低。蓝
宙电子的K60 系统板的主晶振使用的是50MHz 的有源晶振。
K60 的RTC 时钟由独立的32.768KHz 振荡器来提供。
void uart_init (UARTn_e uratn, uint32 baud)
{
register uint16 sbr, osr;
uint8 temp;
uint32 sysclk,tmp_baud; //时钟
uint16 tmp_diff=~0,tmp_sbr,diff_abs_baud;
/* 配置 UART功能的 复用管脚 */
switch(uratn)
{
case UART0:
SIM_SCGC4 |= SIM_SCGC4_UART0_MASK; //使能 UART0 时钟
if(UART0_RX_PIN == PTA1)
{
port_init( UART0_RX_PIN, ALT2);
}
else if((UART0_RX_PIN == PTA15) || (UART0_RX_PIN == PTB16) || (UART0_RX_PIN == PTD6) )
{
port_init( UART0_RX_PIN, ALT3);
}
else
{
ASSERT(0); //上诉条件都不满足,直接断言失败了,设置管脚有误?
}
if(UART0_TX_PIN == PTA2)
{
port_init