历史上的今天
返回首页

历史上的今天

今天是:2024年09月28日(星期六)

2019年09月28日 | 再造STM32---第十七部分:USART—串口通讯

2019-09-28 来源:eefocus

本章参考资料:《STM32F4xx 中文参考手册》 USART 章节。

学习本章时,配合《STM32F4xx 中文参考手册》 USART 章节一起阅读,效果会更佳,特别是涉及到寄存器说明的部分。

特别说明, 本书内容是以 STM32F42xxx 系列控制器资源讲解。


17.1 串口通讯协议简介:

物理层: 规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬

件部分。


协议层: 协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。其实就是软件部分。

 

1-RS232标准:

RS232标准串口通讯结构图:

1、 RS232标准串口主要用于工业设备直接通信

2、电平转换芯片一般有MAX3232, SP3232

RS-232 与 TTL 电平区别

2-USB转串口

USB转串口通讯结构图

1、 USB转串口主要用于设备跟电脑通信

2、电平转换芯片一般有CH340、 PL2303、 CP2102、 FT232

3、使用的时候电脑端需要安装电平转换芯片的驱动

 

3-原生的串口到串口

1、原生的串口通信主要是控制器跟串口的设备戒者传感器通信,不需要经过电平转换芯片来转换电平,直接就用TTL电平通信

2、 GPS模块、 GSM模块、串口转WIFI模块、 HC04蓝牙模块

 

串口数据包的基本组成

起始位: 由1个逻辑 0 的数据位表示

结束位: 由 0.5、 1、 1.5 戒 2 个逻辑 1 的数据位表示

有效数据:在起始位后紧接着的就是有效数据,有效数据的长度常被约定为 5、 6、 7 戒 8 位长

校验位: 可选,为的是数据的抗干扰性。

校验方法分为:

1-奇校验(odd)、 2-偶校验(even)

3-0 校验(space)、 4-校验(mark)

5-无校验(noparity)

奇校验(odd) : 有效数据和校验位中“ 1”的个数为奇数

比如一个 8 位长的有效数据为: 01101001,此时总共有 4个“ 1” ,为达到奇校验效果,校验位为“ 1” , 最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位

偶校验(even) : 有效数据和校验位中“ 1”的个数为偶数

比如一个 8 位长的有效数据为: 01101001,此时总共有 4个“ 1” ,为达到偶校验效果,校验位为“ 0” , 最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位

0 校验是不管有效数据中的内容是什么,校验位总为“ 0” 。

1 校验是校验位总为“ 1” 。

无校验就是数据包中不包含校验位

 

17.2 STM32串口功能框图讲解:

1-引脚

2-数据寄存器

3-控制器

4-波特率

STM32F4xx数据手册—Pinouts and pin description。

ST每个系列的芯片都有一个数据手册,里面有引脚的详细功能。

TX: 数据发送

RX: 是数据接收

SCLK: 时钟,仅同步通信时使用

nRTS: 请求发送(Request To Send)

nCTS: 允许发送(Clear To Send)

数据寄存器—USART_DR: 9位有效,包含一个发送数据寄存器TDR和一个接收数据寄存器RDR。一个地址对应了两个物理内存。

USART_CR1: M, 0: 8bit, 1: 9bit

USART_CR2: STOP

USART_CR1: PCE、 PS、 PEIE

USART_SR : PE

USART_SR: TXE, Transmit data register empty

USART_SR: TC, Transmission complete

USART_CR1: TXEIE

USART_CR1: TCIE

USART_SR: RXNE, Read data register not empty

USART_CR1: RXNEIE

USART_CR1: UE、 TE、 RE

波特率—每秒钟要发送多少数据

USART_BRR:波特率寄存器

USART_CR1: OVER8

USARTDIV:无符号的定点数

FPCLK:串口的时钟,注区分APB2和APB1两条总线

OVER8:过采样模式

 

例如:


USART: USART1,时钟为90M

波特率: 115200

OVER8: 0, 16倍过才样, BRR小数位有效

7.3 STM32串口初始化结构体讲解:

USART初始化结构体

typedef struct

{

uint32_t USART_BaudRate; //波特率 BRR

uint16_t USART_WordLength; //字长 CR1_M

uint16_t USART_StopBits; //停止位 CR2_STOP

uint16_t USART_Parity; //校验控制 CR1_PCE、 CR1_PS

uint16_t USART_Mode; //模式选择CR1_TE、 CR1_RE

// 硬件流选择 CR3_CTSE、 CR3_RTSE

uint16_t USART_HardwareFlowControl;

} USART_InitTypeDef;

同步时钟初始化结构体

typedef struct

{

uint16_t USART_Clock; // 同步时钟 CR2_CLKEN

uint16_t USART_CPOL; // 极性 CR2_CPOL

uint16_t USART_CPHA; // 相位 CR2_CPHA

uint16_t USART_LastBit; //最后一个位的时钟脉冲 CR2_LBC

} USART_ClockInitTypeDef;

7.4 编程时需要用到的固件库函数:

1-配置GPIO为具体的第二功能

void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)

2-中断配置函数

void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT,

FunctionalState NewState)

3-串口使能函数

void USART_Cmd(USART_TypeDef* USARTx,FunctionalState NewState)

4-数据发送函数

void USART_SendData(USART_TypeDef* USARTx, uint16_t Data)


5-数据接收函数

uint16_t USART_ReceiveData(USART_TypeDef* USARTx)

6-中断状态位获取函数

ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT)


7.5 代码讲解:

硬件设计-1: TTL电平转USB电平(使用时电脑上记得安装CH340驱动)

硬件设计-2: TTL电平转232电平

编程要点:

1-初始化串口需要用到的GPIO, GPIO_InitTypeDef,

GPIO_PinAFConfig();

2-初始化串口, USART_InitTypeDef

3-中断配置

4-使能串口

5-编写发送和接收函数

6-编写中断服务函数

 


电脑端发送过来的数据是字符格式的

推荐阅读

史海拾趣

American Custom Components公司的发展小趣事

随着技术的不断进步,American Custom Components公司开始寻求市场拓展的机会。在一次国际电子展览会上,公司展示了其最新研发的电子元器件,并成功吸引了一家欧洲知名电子企业的关注。双方经过深入的沟通和交流,决定展开战略合作,共同开发新的电子产品。这一合作不仅拓宽了公司的销售渠道,还提高了公司的知名度和影响力。

Block USA Inc.公司的发展小趣事

在发展过程中,Block USA Inc.也面临着来自竞争对手和行业变化的挑战。然而,公司始终保持着创新精神,不断调整和优化产品与服务,以适应市场的变化。例如,面对数据安全和隐私保护的日益严格要求,Block加强了其数据保护措施,并公开承认了数据泄露事件并积极采取措施进行补救。同时,公司还继续拓展其业务边界,探索新的增长点,以保持其在电子行业中的竞争优势。

这些故事只是Block USA Inc.在电子行业发展历程中的一部分,它们展示了公司如何通过不断创新和拓展业务领域,逐步成为一家具有影响力的综合性电子企业。然而,随着市场的不断变化和竞争的加剧,Block仍需保持警惕并持续努力,以应对未来的挑战和机遇。

Abbotec Incorporated公司的发展小趣事

Abbotec深知人才是企业发展的核心。因此,公司一直注重人才培养和团队建设。公司定期举办各种培训活动,提升员工的专业技能和管理能力。同时,Abbotec还积极引进外部优秀人才,为公司的发展注入新的活力。

倍思特(BEST)公司的发展小趣事

随着电子行业的快速发展,市场竞争日益激烈。Abbotec在面对市场变革时,果断进行了战略调整。公司加大了对新兴技术的研发投入,同时优化了生产流程,降低了成本。这些措施使得Abbotec在激烈的市场竞争中保持了稳健的发展态势。

昆泰芯微电子(CONNTEK)公司的发展小趣事

为了加快产品国产化进程,昆泰芯微电子与世强先进(深圳)科技股份有限公司签订了授权代理合作协议。通过这一战略合作,昆泰芯微电子成功将旗下高端传感器产品触达至终端市场,实现了市场的快速扩张。同时,这一合作也进一步提升了昆泰芯微电子在行业中的知名度和影响力。

兆易创新(GigaDevice)公司的发展小趣事

为了加快产品国产化进程,昆泰芯微电子与世强先进(深圳)科技股份有限公司签订了授权代理合作协议。通过这一战略合作,昆泰芯微电子成功将旗下高端传感器产品触达至终端市场,实现了市场的快速扩张。同时,这一合作也进一步提升了昆泰芯微电子在行业中的知名度和影响力。

问答坊 | AI 解惑

产生幅值精确的正弦波

利用SPWM产生正弦波只能把频率计算来, 那么怎样才能产生幅值精确的波形呢? 哪位大侠帮助下。…

查看全部问答>

【藏书阁】8051单片机实践与应用

目录: 第1章 MCS一引的结构 1.1 单片机微处理器的简介 1.l.l 单片机微处理器系列介绍 1.1.2 单片机微处理器的应用范围 1.2 MCS-51单片机简介 1.3 8051/8052的引脚图及各引脚功能说明 1.4 存储器结构 l.4.l 程序存储器ROM/EP ...…

查看全部问答>

嵌入式低层开发、嵌入式应用开发都是些什么方面???

嵌入式低层开发做些什么?是1、硬件2、驱动3、系统移植吗?还有其他的吗? 嵌入式应用开发和PC机开发类似吗?…

查看全部问答>

嵌入式软件采购,供应商质量保证

聘用:我这里需要嵌入式软件采购工作的朋友(2年以上工作经验)或者是供应商质量保证方面工作的相关朋友(4年以上工作经验),是一规模强大的法资公司,全球500强之一。如有疑问或问题,请联系我,谢谢! 我的联系方式:13522292029 liping_ling@ ...…

查看全部问答>

GPRS MODEM的IP问题请问!

   最近用ARM+Linux做一个基于GPRS的无线数据传输项目。两个gprs modem分别接到arm开发板和pc上,两个modem之间能实现点对点通信,互传数据。但是因为gprs modem拨号获得的ip(10.x.x.x)是动态分配,开发板每次上电拨号获得的ip都不同,所 ...…

查看全部问答>

关于IAR编译器volatile警告问题

4.42a 发现同时使用2个以上volatile运算时就会出现如下警告:Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement  ...…

查看全部问答>

StellarisWare Tools 文件夹下小工具介绍

对Tools文件夹下的几个工具做一个简单的介绍: 这些工具大多数都要在PC上的命令行下使用,所以在windows XP或Win 7下,使用快捷键WIN+R后输入cmd,在进入到这些小程序所在的路径下,这样使用这些程序转换或生成的文件也在该程序所在的目录下。 ...…

查看全部问答>

如何确定终端是连到协调器还是路由器?

如何确定终端是连到协调器还是路由器?…

查看全部问答>

msp430f5529 定时器求助

我是用的timerA定时器,测高电平和低电平的持续时间,用连续计数模式,不知如何读取定时器的寄存器看计到了多少,那个寄存器是什么啊…

查看全部问答>