LPC1100系列微控制器UART LPC1100系列Cortex-M0微控制器具有一个符合16C550工业标准的异步串行口(UART)。此口同时增加了调制解调器(Modem)接口,DSR、DCD和RI Modem信号是只用于LQFP48和PLCC44封装的管脚配置。
特性
16字节收发FIFO;
寄存器位置符合16C550工业标准;
接收器FIFO触发点可为1、4、8和14字节;
内置波特率发生器;
用于精确控制波特率的小数分频器,并拥有赖以实现软件流控制的自动波特率检测能力和机制;
支持软件或硬件流控制执行;
包含标准Modem接口信号(CTS、DCD、DTS、DTR、RI、RTS);
支持RS-458/EIA-485的9位模式和输出使能。
【实验步骤】:
先看一下板子上UART的原理图
PL-2303HX是一款UART-USB芯片,这里先不管其原理,我们只学习如何将数据从CPU发送到这个TXD RXD处。
一、LPC11C14 UART 寄存器描述
这里只贴出部分
具体寄存器分析,这里不再阐述,先看一下在头文件中我们这样定义
- /*------------- Universal Asynchronous Receiver Transmitter (UART) -----------*/
- /** @addtogroup LPC11xx_UART LPC11xx Universal Asynchronous Receiver/Transmitter
- @{
- */
- typedef struct
- {
- union {
- __I uint32_t RBR; /*!< Offset: 0x000 Receiver Buffer Register (R/ ) */
- __O uint32_t THR; /*!< Offset: 0x000 Transmit Holding Register ( /W) */
- __IO uint32_t DLL; /*!< Offset: 0x000 Divisor Latch LSB (R/W) */
- };
- union {
- __IO uint32_t DLM; /*!< Offset: 0x004 Divisor Latch MSB (R/W) */
- __IO uint32_t IER; /*!< Offset: 0x000 Interrupt Enable Register (R/W) */
- };
- union {
- __I uint32_t IIR; /*!< Offset: 0x008 Interrupt ID Register (R/ ) */
- __O uint32_t FCR; /*!< Offset: 0x008 FIFO Control Register ( /W) */
- };
- __IO uint32_t LCR; /*!< Offset: 0x00C Line Control Register (R/W) */
- __IO uint32_t MCR; /*!< Offset: 0x010 Modem control Register (R/W) */
- __I uint32_t LSR; /*!< Offset: 0x014 Line Status Register (R/ ) */
- __I uint32_t MSR; /*!< Offset: 0x018 Modem status Register (R/ ) */
- __IO uint32_t SCR; /*!< Offset: 0x01C Scratch Pad Register (R/W) */
- __IO uint32_t ACR; /*!< Offset: 0x020 Auto-baud Control Register (R/W) */
- uint32_t RESERVED0;
- __IO uint32_t FDR; /*!< Offset: 0x028 Fractional Divider Register (R/W) */
- uint32_t RESERVED1;
- __IO uint32_t TER; /*!< Offset: 0x030 Transmit Enable Register (R/W) */
- uint32_t RESERVED2[6];
- __IO uint32_t RS485CTRL; /*!< Offset: 0x04C RS-485/EIA-485 Control Register (R/W) */
- __IO uint32_t ADRMATCH; /*!< Offset: 0x050 RS-485/EIA-485 address match Register (R/W) */
- __IO uint32_t RS485DLY; /*!< Offset: 0x054 RS-485/EIA-485 direction control delay Register (R/W) */
- __I uint32_t FIFOLVL; /*!< Offset: 0x058 FIFO Level Register (R) */
- } LPC_UART_TypeDef;
- /*@}*/ /* end of group LPC11xx_UART */
相关宏定义(部分)
- ****************************************************************************/
- #ifndef __UART_H
- #define __UART_H
- #define RS485_ENABLED 0
- #define TX_INTERRUPT 0 /* 0 if TX uses polling, 1 interrupt driven. */
- #define MODEM_TEST 0
- #define IER_RBR (0x01<<0)
- #define IER_THRE (0x01<<1)
- #define IER_RLS (0x01<<2)
- #define IIR_PEND 0x01
- #define IIR_RLS 0x03
- #define IIR_RDA 0x02
- #define IIR_CTI 0x06
- #define IIR_THRE 0x01
- #define LSR_RDR (0x01<<0)
- #define LSR_OE (0x01<<1)