`

UART学习笔记

 
阅读更多

串口(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+(numof1sinUDIVSLOTn)/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)

(numof1sinUDIVSLOTn)/16=0.7

then,(numof1sinUDIVSLOTn)=11

 

66.5mhz*10(6)=66500000

 

UBRDIV00x7F005028R/WBaudratedivisiorregister00x0000

UDIVSLOT00x7F00502CR/WBaudratedivisiorregister00x0000

 

UFSTAT00x7F005018RUARTchannel0FIFOstatusregister0x00

 

TxFIFOFull[14]Setto1automaticallywhenevertransmitFIFOisfull

duringtransmitoperation

0=0-byteTxFIFOdata63-byte

1=Full

0

TxFIFOCount[13:8]NumberofdatainTxFIFO0

Reserved[7]0

RxFIFOFull[6]Setto1automaticallywheneverreceiveFIFOisfullduring

receiveoperation

0=0-byteRxFIFOdata63-byte

1=Full

0

RxFIFOCount[5:0]NumberofdatainRxFIFO0

URXH00x7F005024RUARTchannel0receivebufferregister0x00

UTXH00x7F005020WUARTchannel0transmitbufferregister-

 

TxFIFOFull[14]Setto1automaticallywhenevertransmitFIFOisfull

duringtransmitoperation

0=0-byteTxFIFOdata63-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串口学习笔记

    UART总线 UART (Universal Asynchronous Receiver/Transmitter) 通用异步收发器。 UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样...UART串口学习笔记,与大家分享!

    STM32 RTT学习笔记(二)外设驱动添加(uart)

    STM32 RTT学习笔记(二)主要涉及在RT-Thread实时操作系统上为STM32F407VET6芯片添加UART(通用异步收发传输器)外设驱动的过程。RT-Thread是一个轻量级、高效率的嵌入式实时操作系统,广泛应用于物联网和嵌入式系统...

    VHDL语言学习笔记

    在学习笔记中,可能会包含一些典型的设计实例,如七段显示驱动器、UART串口控制器、简单的数字信号处理器等,帮助理解VHDL的实际应用。 8. **库和标准包** VHDL标准库包括IEEE库,其中的std_logic_1164库提供了...

    UART-思维导图-MX6U嵌入式linux裸机开发学习笔记基于正点原子阿尔法开发板

    UART-思维导图-MX6U嵌入式linux裸机开发学习笔记基于正点原子阿尔法开发板

    K64学习笔记

    【飞思卡尔K64学习笔记】 飞思卡尔K64系列微控制器是基于ARM Cortex-M4内核的高性能MCU,广泛应用于工业控制、物联网设备、嵌入式系统等领域。这款芯片以其强大的处理能力、丰富的外设接口以及低功耗特性而受到...

    ARM学习笔记.zip

    ARM学习笔记概述 在计算机硬件领域,ARM(Advanced RISC Machines)是一种广泛应用的微处理器架构,以其低功耗、高性能和灵活性而闻名。这组学习笔记涵盖了在达内培训机构进行嵌入式系统学习时,对ARM技术深入探索...

    TQ2440学习笔记(全集)

    【TQ2440学习笔记(全集)】是一份综合性的学习资源,主要针对TQ2440开发板进行深入讲解。TQ2440是一款基于ARM920T内核的高性能微处理器,常用于嵌入式系统开发。这份笔记集合涵盖了从基础环境搭建到高级功能实现的...

    开源PLC学习笔记

    PLC\开源PLC学习笔记\源PLC学习笔记05(再从51开始 通讯 UART)

    AVR学习笔记

    AVR学习笔记是一系列关于微控制器编程的教程,主要针对AVR系列的MCU,如ATmega16。这些笔记涵盖了从基础到进阶的应用,旨在帮助初学者和有一定经验的开发者更好地理解和应用AVR微控制器。以下是这些笔记中涉及的一些...

    STM32F407基于标准库的串口UART工程和学习笔记,实现基本的串口收发功能

    UART特点: (1)全双工通信 (2)可配置波特率 (3)可配置16倍过采样或8倍过采样,有更多的速度容差和时钟容差灵活配置 (4)可配置数据字长:8、9位 (5)可配置停止位:1、1.5、 2位,奇偶校验位 (6)可配置DMA...

    STM8学习笔记---uart1串口中断-综合文档

    STM8学习笔记---UART1串口中断 STM8学习笔记系列的这篇文章主要讲解了UART1串口中断的使用,通过编写led.h、led.c、uart.h、uart.c文件,并在stm8s_interrupt.c文件中编写中断处理函数,实现了串口接收和发送中断的...

    松瀚SN8P2711学习笔记.zip_sn8p2711_松瀚_松翰_松翰 2711_松翰学习笔记

    《松瀚SN8P2711学习笔记》是一份专为初学者设计的资料集,旨在帮助读者深入了解和掌握松瀚SN8P2711这款微控制器的使用。松瀚SN8P2711是松瀚公司推出的一款高性能、低功耗的8位微处理器,广泛应用在嵌入式系统、消费...

    k60学习笔记

    ### K60学习笔记知识点概览 #### 一、Kinetis系列单片机简介 - **背景**:Kinetis系列单片机是飞思卡尔半导体(现为恩智浦半导体NXP)推出的一款基于ARM Cortex-M内核的高性能微控制器家族。该系列涵盖了从低端到...

    ARM2440学习笔记

    这份“ARM2440学习笔记”无疑是为那些想要深入理解ARM体系结构和具体应用的初学者提供了一份宝贵的资源。下面,我们将根据标题和描述,结合可能涵盖的知识点进行详细的讲解。 1. **ARM9架构**:ARM9是ARM公司设计的...

    STM32学习笔记,入门学习笔记

    STM32学习笔记,作为一款基于ARM Cortex-M内核的微控制器,STM32具有丰富的功能和广泛应用场景,尤其适合嵌入式系统开发初学者。本文档主要涵盖STM32的基础知识,包括芯片介绍、新建工程流程以及GPIO的输入输出操作...

    PX4飞控学习笔记,无人机基础知识学习笔记

    这份“PX4飞控学习笔记”集合了关于无人机基础知识的学习资料,特别是围绕Pixhawk这一硬件平台展开。Pixhawk是PX4飞控系统常采用的硬件模块,具有强大的计算能力和丰富的接口,能实现对无人机的精确控制。 首先,...

    STM32学习笔记

    STM32学习笔记是针对嵌入式系统开发者的一份详细教程,主要聚焦于基于ARM Cortex-M3内核的32位微控制器STM32。STM32系列由意法半导体(STMicroelectronics)开发,广泛应用于物联网、智能硬件、自动化设备、无人机、...

    MDK_ARM裸奔笔记之UART(查询发送&中断接收)_PC端_源代码

    MDK_ARM裸奔笔记主要涉及的是在ARM微处理器上使用MDK(Keil uVision)开发环境进行裸机编程,本笔记重点在于讲解UART(通用异步收发传输器)的使用,包括查询发送和中断接收两种通信方式。UART是微控制器与外部设备...

    cortex m3 6950学习笔记部分

    【Cortex M3 6950学习笔记部分】 在嵌入式开发中,Cortex M3 6950 是一款广泛应用的微处理器,它提供了丰富的外设接口,如LCD、UART、GPIO和以太网等。这篇学习笔记主要探讨了如何利用这些接口进行基本操作。 首先...

Global site tag (gtag.js) - Google Analytics