1 【有那么点详细的CW32学习笔记】通用异步收发器—发送篇-德赢Vwin官网 网
0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【有那么点详细的CW32学习笔记】通用异步收发器—发送篇

CW32生态社区 来源:CW32生态社区 作者:CW32生态社区 2023-11-17 17:30 次阅读

本章介绍CW32通用异步收发器的使用。

虽然大部分时候会被简单称为“串口”,但实际上 用“串口”来指代UART并不正确 。串口对应并口的概念,在串口通信中,数据被以二进制形式发送,并且每次发送都只传输1比特位(当然,传输速度可能会很快),像SPI、IIC其实也属于串口。而对传输速度的描述,也就是波特率即是 描述的每秒传输的比特位数量 ,例如波特率是9600,就代表该串口每秒可以传输9600bit的数据。与之相对应的并口,则是使用多个物理信道传输数据,一批数据会同时在多个物理信道上传输,这种并行通信会占用很多IO资源,但是传输速度也得到了显著提高。

UART作为一种异步通信方式,它 不需要时钟线 ,在供电正常的情况下一共就只需要两根数据线,非常适合一对一的通信需求。CW32F030拥有3个UART外设,此文章介绍UART1的使用,那么按照惯例,先总览一下使用UART需要做哪些准备工作。

第一:需要将IO设置为输出,并复用为UART模式。

第二:需要使能UART这个外设,并设置通信协议的必要参数(关于UART协议本身,互联网有很多优质教程,读者可以自行搜索),完成初始化。

第三:编写发送和接收函数,调用函数实现发送和接收的功能。

第一步的进行非常简单,查询芯片《数据表》的引脚定义,发现LQFP48封装下,PA8 & PA9是UART1的发送和接收,因此只需要配置好这两个IO的功能,第一步就算是完成了。

图片

图片

配置代码如上图,但有读者表示自己找不到设置复用功能的函数,那我们就来看看功能复用函数的本质是什么。

图片

这是PA9的复用函数,可以看到这是一个宏函数,其内容表明设置复用其实就是设置了对应GPIO复用寄存器的值,PA9属于A组IO的第9号口,是高位Pin口,因此要找到高位口的复用寄存器,并设置复用功能为(0010) 2 ,也就是AF2,具体设置如下图所示。

图片

因此配置复用的时候,如果找不到对应的复用函数,可以直接配置此寄存器来完成复用配置,但为了方便读者,配置IO复用的宏函数均位于cw32xxxxx_gpio.h这个文件中,此头文件包含了相当多的宏函数,均是常用的IO操作,如反转、置位、闪烁等,感兴趣的读者可以前往翻阅。

话题拽回到UART这边,接下来要进行的是第二步,配置UART的必要参数,这里先讲解发送功能需要进行的配置。

不论是什么单片机,想要使用任何一个片上外设,必须要使能该外设的时钟总线 ,直接在工程的函数列表中找到时钟配置文件下的全部函数,根据函数的名字可以快速定位使能UART1时钟的函数

我们可以看到这个函数本质上就是在操作APBEN2这个寄存器,通过查看芯片手册,我们也可以找到各个外设所属的时钟线。

图片

图片

随后就是UART通信参数的结构体了,结构体同样对应了寄存器,但使用结构体可以简化开发者的配置步骤,且看下图:

图片

图片

此结构体成员拥有相当详细的注释,这里直接按照开发者意图配置即可,我在这里配置为:波特率115200、PCLK时钟源、1个停止位、无校验位、全双工模式,配置完成后初始化结构体即可。

值得注意的是,在芯片内部并没有一个直接的波特率数值寄存器,为了保证异步通讯的可靠,波特率越精准越好,且既有的系统时钟不一定能够刚好提供波特率倍数的时基,因此实际上的波特率是一个浮点数,它拥有整数部分小数部分2****个寄存器 。具体的计算公式在芯片手册的通用异步收发器章节有写,这里只列举初始化函数中的相关操作:

图片

由于我选择的是16倍采样,初始化函数会执行上述代码,代码的计算过程复刻了手册中的计算过程(如下图),这里是先计算时钟源在16倍采样模式下能够直接取得的波特率结果temp,temp包含了整数部分和小数部分,整数部分直接赋值即可,小数部分则是将公式变型得到的。开发者在使用时不需要手写计算BRRI和BRRF的寄存器值,初始化函数会自动完成该计算。

图片

皆大欢喜,到目前为止已经成功完成两步了,还差最后一步就可以使用UART的发送功能了,那就是自己写一个UART1的发送函数。我手里刚好就有一个自己写的发送函数,长这个样子:

图片

这段简易代码会发送这个字符串作为UART1的调试参数。

图片

这段代码的主要逻辑在芯片手册里面也有详细描述:

图片

Tips: 在编写各类通信函数这里,我建议一定要 加上至少两个功能 。第一个就是 发送的状态 ,成功还是失败,这很重要,出问题之后的排查工作基本就靠这个了;第二个就是 超时跳出功能 ,有的时候可能硬件故障或者什么别的原因导致发送一直失败,如果死等就让程序全部死掉了,超时跳出可以保证其他大部分程序的正常运行,当然使用看门狗是一种更优解。

在轮询函数中调用调试函数即可实现间隔100ms发送一次的功能,效果如下:

图片

图片

从时间上来看,100ms的定时发送还是很精确的,这种方式占用CPU的时间资源实现发送,虽然传统但是有效可控。

要点总结:

1、注意区分串口和并口的概念。

2、CW32的UART虽然有2个波特率寄存器,但是并不需要开发者手算寄存器参数。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表德赢Vwin官网 网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • uart
    +关注

    关注

    22

    文章

    1235

    浏览量

    101350
  • 通用异步收发器

    关注

    0

    文章

    18

    浏览量

    6748
  • CW32
    +关注

    关注

    1

    文章

    203

    浏览量

    626
收藏 人收藏

    评论

    相关推荐

    TMS320DM643 DMP通用异步收发器(UART)手册

    德赢Vwin官网 网站提供《TMS320DM643 DMP通用异步收发器(UART)手册.pdf》资料免费下载
    发表于 12-16 10:10 0次下载
    TMS320DM643 DMP<b class='flag-5'>通用</b><b class='flag-5'>异步</b><b class='flag-5'>收发器</b>(UART)手册

    TSU6111A USB端口单刀双掷(SP2T)开关支持USB和通用异步收发器(UART)数据表

    德赢Vwin官网 网站提供《TSU6111A USB端口单刀双掷(SP2T)开关支持USB和通用异步收发器(UART)数据表.pdf》资料免费下载
    发表于 07-10 09:21 0次下载
    TSU6111A USB端口单刀双掷(SP2T)开关支持USB和<b class='flag-5'>通用</b><b class='flag-5'>异步</b>接<b class='flag-5'>收发器</b>(UART)数据表

    【项目展示】基于CW32的遥控循迹小车

    CW32循迹小车.zip_免费高速下载|百度网盘-分享无限制  一、概述 CW32循迹、遥控小车具有循迹和遥控两种功能,小车的硬件模块由CW32F030C8T6小蓝板、智能小车控制底板、BT04-E
    的头像 发表于 05-31 17:33 1292次阅读
    【项目展示】基于<b class='flag-5'>CW32</b>的遥控循迹小车

    收发器的主要作用与种类详解

    收发器,作为通信系统中的关键组成部分,其主要作用是实现信号的发送和接收。随着通信技术的不断发展,收发器的种类也日益丰富,满足了不同场景下的通信需求。本文将对收发器的主要作用和种类进行
    的头像 发表于 05-22 17:05 2253次阅读

    CW32量产烧录工具

    本节主要介绍CW32微控制的烧录CW-Writer,以及与之配合的软件CW-Programmer的使用方法。烧录
    的头像 发表于 04-25 15:22 1389次阅读
    <b class='flag-5'>CW32</b>量产烧录工具

    CW32快速开发入门

    CW32快速开发入门
    的头像 发表于 04-24 18:56 1947次阅读
    <b class='flag-5'>CW32</b>快速开发入门

    那么点详细CW32学习笔记】ADC“自动模式”

    上个章节介绍了ADC的基本框架和用法,本章节会较为全面地讲解如何灵活地使用ADC功能。 通常来说,外设执行的各种命令都是由CPU发出的,比如我们需要进行AD转换,就通过某个寄存标志位启动ADC
    的头像 发表于 03-04 18:09 972次阅读
    【<b class='flag-5'>有</b><b class='flag-5'>那么点</b><b class='flag-5'>详细</b>的<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】ADC“自动模式”

    那么点详细CW32学习笔记】模数转换

    来说,想要判断大小就需要有对比,因此该数字指示的电压大小实际上是一个比较的结果。 ADC将需要测量的电压信号Ut与已知电压的信号U作比较,并最终输出一个数字表示Ut相当于多少比例的U。 接下来就可以看看CW32的ADC外设结构框图了,
    的头像 发表于 02-29 09:41 766次阅读
    【<b class='flag-5'>有</b><b class='flag-5'>那么点</b><b class='flag-5'>详细</b>的<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】模数转换<b class='flag-5'>器</b>

    光纤收发器ab端哪个是接收 光纤收发器AB能调换吗

    那么在这两个端口中,哪一个是接收端呢?光纤收发器AB能否调换? 首先来看光纤收发器的A端和B端。A端是指发送端,也就是将电信号转换为光信号并发送
    的头像 发表于 02-14 18:02 1.5w次阅读

    那么点详细CW32学习笔记】IIC接口-主机发送

    例程链接 : https://pan.baidu.com/s/1s1XwqDFkO8fK4SRSTKsNhA?pwd=mshk 提取码 :mshk 本章将介绍CW32的IIC接口,并最终点亮一块
    的头像 发表于 01-11 09:53 617次阅读
    【<b class='flag-5'>有</b><b class='flag-5'>那么点</b><b class='flag-5'>详细</b>的<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】IIC接口-主机<b class='flag-5'>发送</b>

    那么点详细CW32学习笔记】IIC接口-OLED驱动

    ,实际上就是密集LED点阵,所以必定有用于控制大量LED灯的驱动,本教学使用的OLED驱动是SSD1306,该驱动多种通信接口,这里使用IIC接口(具体使用什么接口,数据手册上会有详细
    的头像 发表于 01-11 09:49 748次阅读
    【<b class='flag-5'>有</b><b class='flag-5'>那么点</b><b class='flag-5'>详细</b>的<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】IIC接口-OLED驱动

    CW32学习笔记】IIC接口-主机发送

    接着就是比较重要的部分了,IIC接口的收发并不是全自动的,因为一个完整的通信不仅包括发数据(地址、数据什么的),还包含收数据(啥也不干也得接收ACK信号),所以IIC通信的每个部分基本上都是收发易位的过程,IIC外设并不会自动完成这个复杂的过程
    的头像 发表于 01-10 15:59 656次阅读
    【<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】IIC接口-主机<b class='flag-5'>发送</b>

    基于CW32的门禁综合系统

    基于CW32单片机的门禁综合系统是一款功能强大的智能门禁解决方案,它提供了三种开锁方式:密码开锁、指纹开锁和刷卡开锁,为用户提供方便、安全的门禁控制。该系统的核心控制采用了CW32单片机,具备
    的头像 发表于 12-28 11:43 1688次阅读
    基于<b class='flag-5'>CW32</b>的门禁综合系统

    那么点详细CW32学习笔记通用定时——输出比较

    本章以CW32通用定时为例介绍单片机定时的用法。 定时是单片机中一个非常传统且重要的外设,定时
    的头像 发表于 12-28 11:24 1310次阅读
    【<b class='flag-5'>有</b><b class='flag-5'>那么点</b><b class='flag-5'>详细</b>的<b class='flag-5'>CW32</b><b class='flag-5'>学习</b><b class='flag-5'>笔记</b>】<b class='flag-5'>通用</b>定时<b class='flag-5'>器</b>——输出比较

    工业级光纤收发器和商业级光纤收发器什么区别呢?

    工业级光纤收发器和商业级光纤收发器什么区别呢?在什么情况下该选择工业级光纤收发器呢? 工业级光纤收发器和商业级光纤
    的头像 发表于 12-27 15:02 1043次阅读