串口(UART)
DIV_VAL=(PCLK/(bpsx16))−1
35=115200/66.5/16-1
查看芯片手册:
GPACON0x7F008000R/WPortAConfigurationRegister0x0000
GPA0[3:0]0000=Input0001=Output
0010=UARTRXD[0]0011=Reserved
0100=Reserved0101=Reserved
0110=Reserved0111=ExternalInterruptGroup1[0]
0000
GPA1[7:4]0000=Input0001=Output
0010=UARTTXD[0]0011=Reserved
0100=Reserved0101=Reserved
0110=Reserved0111=ExternalInterruptGroup1[1]
0000
ULCON00x7F005000R/WUARTchannel0linecontrolregister0x00
Reserved[7]0
Infra-RedMode[6]DeterminewhetherornottousetheInfra-Redmode.
0=Normalmodeoperation
1=Infra-RedTx/Rxmode
0
ParityMode[5:3]Specifythetypeofparitygenerationandcheckingduring
UARTtransmitandreceiveoperation.
0xx=Noparity
100=Oddparity
101=Evenparity
110=Parityforced/checkedas1
111=Parityforced/checkedas0
000
NumberofStopBit[2]Specifyhowmanystopbitsaretobeusedforend-of-frame
signal.
0=Onestopbitperframe
1=Twostopbitperframe
0
WordLength[1:0]Indicatethenumberofdatabitstobetransmittedorreceived
perframe.
00=5-bit01=6-bit
10=7-bit11=8-bit
UCON00x7F005004R/WUARTchannel0controlregister0x00
TransmitMode[3:2]DeterminewhichfunctioniscurrentlyabletowriteTxdatatothe
UARTtransmitbufferregister.
00=Disable
01=Interruptrequestorpollingmode
10=DMArequest(DMA_UART0)
11=DMArequest(DMA_UART1)
00
ReceiveMode[1:0]DeterminewhichfunctioniscurrentlyabletoreaddatafromUART
receivebufferregister.
00=Disable
01=Interruptrequestorpollingmode
10=DMArequest(DMA_UART0)
11=DMArequest(DMA_UART1)
UFCON00x7F005008R/WUARTchannel0FIFOcontrolregister0x0
FIFOEnable[0]0=Disable1=Enable0
UMCON00x7F00500CR/WUARTchannel0Modemcontrolregister0x0
DIV_VAL=UBRDIVn+(numof1’sinUDIVSLOTn)/16
DIV_VAL=(PCLK/(bpsx16))−1
Forexample,ifthebaud-rateis115200bpsandEXT_UCLK0isUARTbaud-rateclockand40MHz,UBRDIVn
andUDIVSLOTnare:
DIV_VAL=(40000000/(115200x16))-1=21.7-1
=20.7
UBRDIVn=20(integerpartofDIV_VAL)
(numof1’sinUDIVSLOTn)/16=0.7
then,(numof1’sinUDIVSLOTn)=11
66.5mhz*10(6)=66500000
UBRDIV00x7F005028R/WBaudratedivisiorregister00x0000
UDIVSLOT00x7F00502CR/WBaudratedivisiorregister00x0000
UFSTAT00x7F005018RUARTchannel0FIFOstatusregister0x00
TxFIFOFull[14]Setto1automaticallywhenevertransmitFIFOisfull
duringtransmitoperation
0=0-byte≤TxFIFOdata≤63-byte
1=Full
0
TxFIFOCount[13:8]NumberofdatainTxFIFO0
Reserved[7]0
RxFIFOFull[6]Setto1automaticallywheneverreceiveFIFOisfullduring
receiveoperation
0=0-byte≤RxFIFOdata≤63-byte
1=Full
0
RxFIFOCount[5:0]NumberofdatainRxFIFO0
URXH00x7F005024RUARTchannel0receivebufferregister0x00
UTXH00x7F005020WUARTchannel0transmitbufferregister-
TxFIFOFull[14]Setto1automaticallywhenevertransmitFIFOisfull
duringtransmitoperation
0=0-byte≤TxFIFOdata≤63-byte
1=Full
示例代码如下:
#defineULCON0(*((volatileunsignedlong*)0x7F005000))
#defineUCON0(*((volatileunsignedlong*)0x7F005004))
#defineUFCON0(*((volatileunsignedlong*)0x7F005008))
#defineUMCON0(*((volatileunsignedlong*)0x7F00500C))
#defineUTRSTAT0(*((volatileunsignedlong*)0x7F005010))
#defineUFSTAT0(*((volatileunsignedlong*)0x7F005018))
#defineUTXH0(*((volatileunsignedchar*)0x7F005020))
#defineURXH0(*((volatileunsignedchar*)0x7F005024))
#defineUBRDIV0(*((volatileunsignedshort*)0x7F005028))
#defineUDIVSLOT0(*((volatileunsignedshort*)0x7F00502C))
#defineGPACON(*((volatileunsignedlong*)0x7F008000))
voidinit_uart(void)
{
/*将GPACON的前八位清零*/
/*10101010*/
/*00000000(~0xff)*/
/*--------------*/
/*00000000*/
GPACON&=~0xff;
/*设GPACON初值*/
GPACON|=0x22;
/*ULCON0*/
ULCON0=0x3;/*数据位:8,无较验,停止位:1,8n1*/
UCON0=0x5;/*使能UART发送、接收*/
UFCON0=0x01;/*FIFOENABLE*/
UMCON0=0;
/*波特率*/
/*DIV_VAL=(PCLK/(bpsx16))-1
*bps=57600
*DIV_VAL=(66500000/(115200x16))-1
*=35.08
*/
UBRDIV0=35;
/*x/16=0.08
*x=1
*/
UDIVSLOT0=0x1;
}
chargetchar(void)
{
while((UFSTAT0&(1<<6))==0&&(UFSTAT0&0x3f)==0);
returnURXH0;
}
voidputchar(charc)
{
while((UFSTAT0&(1<<14));
UTXH0=c;
}
相关推荐
UART(通用异步收发器)学习笔记 ...本UART学习笔记提供了详细的UART知识点,涵盖了UART的基本概念、工作原理、接收器状态机、数据接收方法、波特率发生器设计等方面的内容,为学习者提供了详细的UART知识体系。
UART总线 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器。 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样...UART串口学习笔记,与大家分享!
STM32 RTT学习笔记(二)主要涉及在RT-Thread实时操作系统上为STM32F407VET6芯片添加UART(通用异步收发传输器)外设驱动的过程。RT-Thread是一个轻量级、高效率的嵌入式实时操作系统,广泛应用于物联网和嵌入式系统...
在学习笔记中,可能会包含一些典型的设计实例,如七段显示驱动器、UART串口控制器、简单的数字信号处理器等,帮助理解VHDL的实际应用。 8. **库和标准包** VHDL标准库包括IEEE库,其中的std_logic_1164库提供了...
UART-思维导图-MX6U嵌入式linux裸机开发学习笔记基于正点原子阿尔法开发板
【飞思卡尔K64学习笔记】 飞思卡尔K64系列微控制器是基于ARM Cortex-M4内核的高性能MCU,广泛应用于工业控制、物联网设备、嵌入式系统等领域。这款芯片以其强大的处理能力、丰富的外设接口以及低功耗特性而受到...
ARM学习笔记概述 在计算机硬件领域,ARM(Advanced RISC Machines)是一种广泛应用的微处理器架构,以其低功耗、高性能和灵活性而闻名。这组学习笔记涵盖了在达内培训机构进行嵌入式系统学习时,对ARM技术深入探索...
【TQ2440学习笔记(全集)】是一份综合性的学习资源,主要针对TQ2440开发板进行深入讲解。TQ2440是一款基于ARM920T内核的高性能微处理器,常用于嵌入式系统开发。这份笔记集合涵盖了从基础环境搭建到高级功能实现的...
PLC\开源PLC学习笔记\源PLC学习笔记05(再从51开始 通讯 UART)
AVR学习笔记是一系列关于微控制器编程的教程,主要针对AVR系列的MCU,如ATmega16。这些笔记涵盖了从基础到进阶的应用,旨在帮助初学者和有一定经验的开发者更好地理解和应用AVR微控制器。以下是这些笔记中涉及的一些...
UART特点: (1)全双工通信 (2)可配置波特率 (3)可配置16倍过采样或8倍过采样,有更多的速度容差和时钟容差灵活配置 (4)可配置数据字长:8、9位 (5)可配置停止位:1、1.5、 2位,奇偶校验位 (6)可配置DMA...
STM8学习笔记---UART1串口中断 STM8学习笔记系列的这篇文章主要讲解了UART1串口中断的使用,通过编写led.h、led.c、uart.h、uart.c文件,并在stm8s_interrupt.c文件中编写中断处理函数,实现了串口接收和发送中断的...
《松瀚SN8P2711学习笔记》是一份专为初学者设计的资料集,旨在帮助读者深入了解和掌握松瀚SN8P2711这款微控制器的使用。松瀚SN8P2711是松瀚公司推出的一款高性能、低功耗的8位微处理器,广泛应用在嵌入式系统、消费...
### K60学习笔记知识点概览 #### 一、Kinetis系列单片机简介 - **背景**:Kinetis系列单片机是飞思卡尔半导体(现为恩智浦半导体NXP)推出的一款基于ARM Cortex-M内核的高性能微控制器家族。该系列涵盖了从低端到...
这份“ARM2440学习笔记”无疑是为那些想要深入理解ARM体系结构和具体应用的初学者提供了一份宝贵的资源。下面,我们将根据标题和描述,结合可能涵盖的知识点进行详细的讲解。 1. **ARM9架构**:ARM9是ARM公司设计的...
STM32学习笔记,作为一款基于ARM Cortex-M内核的微控制器,STM32具有丰富的功能和广泛应用场景,尤其适合嵌入式系统开发初学者。本文档主要涵盖STM32的基础知识,包括芯片介绍、新建工程流程以及GPIO的输入输出操作...
这份“PX4飞控学习笔记”集合了关于无人机基础知识的学习资料,特别是围绕Pixhawk这一硬件平台展开。Pixhawk是PX4飞控系统常采用的硬件模块,具有强大的计算能力和丰富的接口,能实现对无人机的精确控制。 首先,...
STM32学习笔记是针对嵌入式系统开发者的一份详细教程,主要聚焦于基于ARM Cortex-M3内核的32位微控制器STM32。STM32系列由意法半导体(STMicroelectronics)开发,广泛应用于物联网、智能硬件、自动化设备、无人机、...
MDK_ARM裸奔笔记主要涉及的是在ARM微处理器上使用MDK(Keil uVision)开发环境进行裸机编程,本笔记重点在于讲解UART(通用异步收发传输器)的使用,包括查询发送和中断接收两种通信方式。UART是微控制器与外部设备...
【Cortex M3 6950学习笔记部分】 在嵌入式开发中,Cortex M3 6950 是一款广泛应用的微处理器,它提供了丰富的外设接口,如LCD、UART、GPIO和以太网等。这篇学习笔记主要探讨了如何利用这些接口进行基本操作。 首先...