【联盛德W806上手笔记】六、7816/UART 控制器

发布者:不加糖的302最新更新时间:2022-07-19 来源: csdn关键字:UART  控制器 手机看文章 扫描二维码
随时随地手机看文章

Windows 10 20H2

HLK-W806-V1.0-KIT

WM_SDK_W806_v0.6.0


       摘自《W806 芯片设计指导书 V1.0》、《W806 MCU 芯片规格书 V2.0》


7816/UART 控制器

设备端符合 APB 总线接口协议

支持中断或轮询工作方式

支持 DMA 传输模式,发送接收各存在 32-byte FIFO

DMA 只能按字节进行操作,最大 16-burst byte DMA 操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

兼容 UART 以及 7816 接口功能


串口功能

波特率可编程

5-8bit 数据长度,以及 parity 极性可配置

1 或 2 个 stop 位可配置

支持 RTS/CTS 流控

支持 Break 帧发送与接收

Overrun,parity error,frame error,rx break frame 中断指示


7816 接口功能

兼容 ISO-7816-3 T=0.T=1 模式

兼容 EVM2000 协议

可配置 guard time(11 ETU-267 ETU)

正向/反向约定可软件配置

支持发送/接收奇偶校验及重传功能

支持 0.5 和 1.5 停止位配置


下载口

       W806 芯片默认 UART0 为下载口,芯片无固件初始下载时,直接连接 UART0 接口,通过相关下载软件即可实现固件下载。当芯片内有固件,再次进入下载模式,可以通过拉低 BOOTMODE,然后上电进入下载模式。下载完成后去掉 BOOTMODE 拉低的操作,需要重启,固件才能运行。


库函数

函数

       打开wm_uart.h,有如下的函数声明:


//初始化所用串口的波特率、数据位、停止位、校验位、模式等

HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);


//将初始化之后的串口恢复成默认的状态–各个寄存器复位时的值

HAL_StatusTypeDef HAL_UART_DeInit(UART_HandleTypeDef *huart);


//串口发送数据,使用超时管理机制 

HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);


//串口接收数据,使用超时管理机制

HAL_StatusTypeDef HAL_UART_Receive(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout);


//串口中断模式发送  

HAL_StatusTypeDef HAL_UART_Transmit_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);


/**

  * 以中断方式接收一定长度的数据.

  * 注意:pData指向的地址,空间长度必须大于等于32字节

  *   Size大于0,则接收够Size长度的数据执行一次HAL_UART_RxCpltCallback(huart);

  *   Sized等于0,则接收不定长的数据就执行一次HAL_UART_RxCpltCallback(huart);

  *       两种情况下,数据都存放在huart->pRxBuffPtr或者pData中,数据长度存放在huart->RxXferCount中

  */

HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size);


//串口中断服务函数,用来响应各种串口中断。

//函数实体里面有两个功能,一是清除中断标记位,二是调用相应的回调函数,

//如UART_Receive_IT、UART_Transmit_IT、UART_EndTransmit_IT

void HAL_UART_IRQHandler(UART_HandleTypeDef *huart);


//串口发送中断回调函数,被UART_EndTransmit_IT调用

void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart);


//串口接收中断回调函数,被UART_Receive_IT调用

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);


参数

结构体和枚举类型

看到STM32绷不住了


typedef struct

{

uint32_t BaudRate;                  /*!< This member configures the UART communication baud rate.

   The baud rate is computed using the following formula:

   - IntegerDivider = ((PCLKx) / (16 * (huart->Init.BaudRate)))

   - FractionalDivider = ((IntegerDivider - ((uint32_t) IntegerDivider)) * 16) + 0.5 */


uint32_t WordLength;                /*!< Specifies the number of data bits transmitted or received in a frame.

   This parameter can be a value of @ref UART_Word_Length */


uint32_t StopBits;                  /*!< Specifies the number of stop bits transmitted.

   This parameter can be a value of @ref UART_Stop_Bits */


uint32_t Parity;                    /*!< Specifies the parity mode.

   This parameter can be a value of @ref UART_Parity

   @note When parity is enabled, the computed parity is inserted

at the MSB position of the transmitted data (9th bit when

the word length is set to 9 data bits; 8th bit when the

word length is set to 8 data bits). */


uint32_t Mode;                      /*!< Specifies whether the Receive or Transmit mode is enabled or disabled.

   This parameter can be a value of @ref UART_Mode */


uint32_t HwFlowCtl;                 /*!< Specifies whether the hardware flow control mode is enabled or disabled.

   This parameter can be a value of @ref UART_Hardware_Flow_Control */


uint32_t OverSampling;              /*!< Specifies whether the Over sampling 8 is enabled or disabled, to achieve higher speed (up to fPCLK/8).

   This parameter can be a value of @ref UART_Over_Sampling. This feature is only available 

   on STM32F100xx family, so OverSampling parameter should always be set to 16. */

} UART_InitTypeDef;


typedef enum

{

HAL_UART_STATE_RESET             = 0x00U,    /*!< Peripheral is not yet Initialized

   Value is allowed for gState and RxState */

HAL_UART_STATE_READY             = 0x20U,    /*!< Peripheral Initialized and ready for use

   Value is allowed for gState and RxState */

HAL_UART_STATE_BUSY              = 0x24U,    /*!< an internal process is ongoing

   Value is allowed for gState only */

HAL_UART_STATE_BUSY_TX           = 0x21U,    /*!< Data Transmission process is ongoing

   Value is allowed for gState only */

HAL_UART_STATE_BUSY_RX           = 0x22U,    /*!< Data Reception process is ongoing

   Value is allowed for RxState only */

HAL_UART_STATE_BUSY_TX_RX        = 0x23U,    /*!< Data Transmission and Reception process is ongoing

   Not to be used for neither gState nor RxState.

   Value is result of combination (Or) between gState and RxState values */

HAL_UART_STATE_TIMEOUT           = 0xA0U,    /*!< Timeout state

   Value is allowed for gState only */

HAL_UART_STATE_ERROR             = 0xE0U     /*!< Error

   Value is allowed for gState only */

} HAL_UART_StateTypeDef;


typedef struct __UART_HandleTypeDef

{

USART_TypeDef                 *Instance;        /*!< UART registers base address        */


UART_InitTypeDef              Init;             /*!< UART communication parameters      */


uint8_t                       *pTxBuffPtr;      /*!< Pointer to UART Tx transfer Buffer */


uint16_t                      TxXferSize;       /*!< UART Tx Transfer size              */


__IO uint16_t                 TxXferCount;      /*!< UART Tx Transfer Counter           */


uint8_t                       *pRxBuffPtr;      /*!< Pointer to UART Rx transfer Buffer */


uint16_t                      RxXferSize;       /*!< UART Rx Transfer size              */


__IO uint16_t                 RxXferCount;      /*!< UART Rx Transfer Counter           */


HAL_LockTypeDef               Lock;             /*!< Locking object                     */


__IO HAL_UART_StateTypeDef    gState;           /*!< UART state information related to global Handle management

   and also related to Tx operations.

   This parameter can be a value of @ref HAL_UART_StateTypeDef */


__IO HAL_UART_StateTypeDef    RxState;          /*!< UART state information related to Rx operations.

   This parameter can be a value of @ref HAL_UART_StateTypeDef */


__IO uint32_t                 ErrorCode;        /*!< UART Error code                    */


}UART_HandleTypeDef;


typedef enum

{

UART_FIFO_TX_NOT_FULL,

UART_FIFO_TX_EMPTY,

UART_FIFO_RX_NOT_EMPTY,

} HAL_UART_WaitFlagDef;


宏参数


#define UART0 ((USART_TypeDef *)UART0_BASE)

#define UART1 ((USART_TypeDef *)UART1_BASE)

#define UART2 ((USART_TypeDef *)UART2_BASE)

#define UART3 ((USART_TypeDef *)UART3_BASE)

#define UART4 ((USART_TypeDef *)UART4_BASE)

#define UART5 ((USART_TypeDef *)UART5_BASE)


#define UART_FIFO_FULL 32


#define HAL_UART_ERROR_NONE              0x00000000U   /*!< No error            */

#define HAL_UART_ERROR_FE                0x00000040U   /*!< Frame error         */

#define HAL_UART_ERROR_PE                0x00000080U   /*!< Parity error        */

#define HAL_UART_ERROR_ORE               0x00000100U   /*!< Overrun error       */


#define UART_WORDLENGTH_5B                  ((uint32_t)UART_LC_DATAL_5BIT)

#define UART_WORDLENGTH_6B                  ((uint32_t)UART_LC_DATAL_6BIT)

#define UART_WORDLENGTH_7B                  ((uint32_t)UART_LC_DATAL_7BIT)

#define UART_WORDLENGTH_8B                  ((uint32_t)UART_LC_DATAL_8BIT)


#define UART_STOPBITS_1                     0x00000000

[1] [2] [3]
关键字:UART  控制器 引用地址:【联盛德W806上手笔记】六、7816/UART 控制器

上一篇:【联盛德W806上手笔记】七、I2C
下一篇:【联盛德W806上手笔记】五、TIM定时器

推荐阅读最新更新时间:2024-11-17 05:53

准谐振软开关控制器IRIS4015的设计及应用
摘要:IRIS4015是一款专用准谐振软开关控制器,该芯片功能齐全,使用外围元件少,并具有完善的保护电路。文中详细介绍了该芯片的特点、功能,给出了其典型应用电路。 关键词:准谐振;软开关;反激变换器;IRIS4015 1 概述 IRIS4015是将MOSFET和开关电源控制器封装在一起的组合集成电路,主要应用于反激式准谐振变换器。该器件采用5脚SIP或SMD封装,适用于各类高低压开关电源。该器件的静态工作电流很低(100μA),具有内部软启动、温度补偿的逐脉冲过流保护OCP、过压锁定保护(OVP)和过热关断保护(TSD)等功能。 2 引脚功能 IRIS4015的管脚排列如图1所示。各引脚的功能如表1所列。
[应用]
基于DSP和FPGA的嵌入式同步控制器实现
摘 要:针对印染设备多单元同步控制中动态性和稳定性的问题,提出一种基于DSP和FPGA的嵌入式同步控制器设计方案。DSP作为运算控制的核心,负责控制算法的实现;FPGA作为数据采集模块的核心,负责数据采集的实现。该系统具有结构灵活,通用性强的特点,且大大减少了系统的外围接口器件,降低了成本。采用Bang-Bang控制和数字PID控制相结合的双模控制算法,满足了系统响应快速性和稳定性的要求,提高了可靠性,具有很高的实用价值。 关键词:嵌入式;同步控制;DSP;FPGA 在印染机械设备生产加工过程中,各个传动单元分别由独立的电机驱动。为了保证整机各单元同步协调工作,提高产品质量,需要设计相应的同步控制器。多单元同步传动是印
[嵌入式]
基于DSP和FPGA的嵌入式同步<font color='red'>控制器</font>实现
释放嵌入式控制器中的CPU资源
本文介绍了一种采用PLD和数据通路(datapath)来解放微控制器系统中CPU任务的方案。在大多数微控制器结构中,智能的CPU身边总会环绕着一系列不可编程的外设。外设的功能有限,通常它们只负责数据形式的转换。例如,I2C外设只是实现串行和并行数据格式之间的转换,而ADC则实现模拟到数字信号的转换。CPU因此不得不完成所有的数据处理工作,实际上它还能做些更有用的事情。此外,管理外设将会导致CPU固件异常复杂,并可能需要一个快速高效的CPU在实时的时序限制下执行这些固件。这又会导致更多的潜在程序漏洞,从而需要使用更复杂和昂贵的调试设备等。 但是如果外设具备足够的复杂度、灵活度与智能,是否能有效地减轻CPU的许多任务呢?复杂的设
[单片机]
释放嵌入式<font color='red'>控制器</font>中的CPU资源
STM32F103标准库开发---Uart串口通信实验---初始化配置
一、Uart 串口通信 1. Uart 简介 UART 全称为Universal Asynchronous Receiver/Transmitter,即通用异步收发器 ,是一种通用串行数据总线,用于异步通信。 该总线双向通信,可以实现全双工数据发送和接收。 常用于单片机和电脑之间以及单片机和单片机之间的板级通信。 2. 接口连接方式 Uart 串口通信的数据由发送设备通过自身的TXD接口传输到接收设备的RXD接口,硬件连接比较简单,仅需要3条线。 具体连接图如下: 3. 传输方式 Uart 串口通信的数据由发送设备通过自身的TXD接口传输到接收设备的RXD接口, 一个字符一个字符地传输,每个字符一位一位地传输,并且传输
[单片机]
STM32F103标准库开发---<font color='red'>Uart</font>串口通信实验---初始化配置
东芝推出适用于电机控制的Arm® Cortex®-M4微控制器
进一步丰富TXZ+™族高级系列的M4K组,将代码闪存扩充至512 KB/1 MB 中国上海,2024年3月26日——东芝电子元件及存储装置株式会社(“东芝”)今日宣布, 采用Cortex®-M4内核并搭载FPU的TXZ+™族高级系列32位微控制器的M4K组新增8款新产品,闪存容量达512 KB/1 MB,同时提供4种不同的封装类型。 支持物联网的电机应用功能不断发展,需要更大的编程容量以及更好的固件OTA支持。 东芝新推出的M4K组产品将现有产品的最大代码闪存容量从256 KB扩充至512 KB /1 MB (具体容量视产品而定),RAM容量也从24 KB扩充至64 KB。 在容量提升的同时,其他特性也得以保留,包
[工业控制]
东芝推出适用于电机控制的Arm® Cortex®-M4微<font color='red'>控制器</font>
Cortex-M3 (NXP LPC1788)之UART用法
在工作中经常将平台的串口和PC机连接,通过串口打印信息进行程序调试。LPC1788共有5个串口Uart0~Uart4,跟具开发板的资源,将使用Uart2进行简单的串口输出和输入中断的操作。开发板上使用74HC4052多路开关对UART2的RXD和TXD进行选择,使用SP3243E进行3.0V到5.5V的RS-232电平转换。查看手册配置好相关的跳线帽,保证DB口上的串口输出采用的是Uart2。 下面介绍Uart相关系统配置和Uart模块的配置。Uart的时钟采用PCLK,我们配置系统的CCLK为120M,PCLK为60M,后面设置串口的波特率就采用PLCK进行计算。要使用串口2的功能需要使能系统时钟控制PCONP,以
[单片机]
Cortex-M3 (NXP LPC1788)之<font color='red'>UART</font>用法
DS1620与DS5000/8051微控制器接口
本应用笔记向用户介绍DS5000(兼容8051)微控制器与DS1620数字温度传感器的接口软件。DS1620通过3线串行数字接口进行通信。提供的软件代码用于读取DS1620温度寄存器,并根据计数器和斜率累加器寄存器的数据计算高分辨率结果。 介绍 DS1620数字温度计和恒温器提供9位温度读数。它具有三个报警输出,因此该设备也可以充当恒温器。DS1620集成了3线接口,可使用兼容8051的DS5000安全微控制器进行控制。DS1620直接连接到DS5000微控制器的I/O端口,3线握手和温度读数由低级软件驱动程序处理,如本文档所示。 DS1620的温度控制 DS1620的恒温输出允许它直接控制加热和冷却设备。T高如果器件超过
[单片机]
DS1620与DS5000/8051微<font color='red'>控制器</font>接口
多重方式适应快速灵活的电源系统设计
刚刚毕业的小王来到一家电源设计公司工作,不过最近一直在向朋友们抱怨工作遇到的烦恼。“我真的不想干了,”小王继续说道:“现在的设计让我头疼,一方面你要挑选更适合的芯片吧?另一方面现在产品都在压价,你的预算超标在老板那边根本无法交代。” “我们一个产品电源设计确定选型后要报告吧?之后需要采购、测试、设计、评估等多套手续。等新品投放市场后其他公司的产品早就出来了。”小王一脸无奈的说道。与小王有相同烦恼的工程师很多,一方面工程师已经基本免疫了各大代理商的产品工程师天花乱坠般描述;但同时另一方面,选型所遇到的麻烦又是相当多。小王就明确表示过其在设计新产品时选型花费的时间远远超过设计本身的时间。 开关式控制器目前确实面临
[电源管理]
多重方式适应快速灵活的电源系统设计
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved