串口(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 (Universal Asynchronous Receiver/Transmitter) 通用异步收发器。 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样...UART串口学习笔记,与大家分享!
UART(通用异步收发器)学习笔记,很好地学习资料,你值得一看!
本文介绍了自己在学习RT-Thread操作系统时,移植操作系统后,添加串口外设的一些总结和调试笔记。操作系统:RT-Thread;芯片:stm32f407vet6.
PLC\开源PLC学习笔记\源PLC学习笔记05(再从51开始 通讯 UART)
cortexm36950 学习笔记部分 LCD UART GPIO 以太网 SD卡
STM8学习笔记---uart1串口中断
MSP432学习笔记3:多路串口通信收发工程下载, 因为KEIL仿真需要占用一个串口,所以此处学习多路的串口收发, 以达到既能仿真,又不影响MSP432向上位机发送串口数据。 串口通讯对于对于单片机的调试运行也有着非常...
UARTE 是带有 EasyDMA 的通用异步接收器/发送器 UART。提供快速、全双工、异步的串口通信,内置流量控制(CTS,RTS)支持硬件,速率高达 1 Mbps。 以下是 UARTE 的主要功能: 全双工操作 自动硬件流控制 生成9位数据...
STM32F103RE学习笔记-串口中断学习。详细的介绍了STM32中串口中断的初始化,串口接收数据、发送数据,每一条指令都有详细说明,对于刚接触这个的人来说是非常有用的。
FPGA学习笔记,包含verilog基础,状态机,UART串口等,适合初学者,看着B站视频学
ESP8266学习笔记(9)——UART串口使用(NONOS SDK)-附件资源
乐鑫esp8266学习rtos3.0笔记第2篇: 你要找的基本外设功能都在这里了,包括Gpio、Pwm 和 Uart 接口使用。 -对应的博文链接:https://xuhong.blog.csdn.net/article/details/88526251
UART协议(中文版)、I2C协议(中文版)、SPI协议(中文版和英文版)、SPI总线协议_SD卡应用、SPI总线_TLC1549-带串行控制的10 位模数转换器的应用、SPI接口学习笔记_ADuC812 与nRF2401的应用
实验用 mini 板的三个串口来演示多机通信,实验循循渐进地来演示串口的多机通信,力求让读者能够更好的了解什么是多...当然这也是本人自己的学习多机通信的历程笔记。涉及到中断、 DMA 等内容,这里也会做些简单介绍。
文档对stm8各个模块的使用,及寄存器的配置方式进行了详细的解释,很全面,通俗易懂!
项目四 多线程文件下载 25 项目五 Android自定义树形菜单 26 项目六 高仿微信聊天 26 项目七 Android串口通信 26 1. Java层 26 2.JNI层 26 3.PC模拟MCU层 26 4.问题 26 ...二、 uses Uart(through JNI) 44