设计需求
使用串口打印调式信息
一、基础知识
在嵌入式中,通信将主控芯片与传感器、存储芯片、外围控制芯片等连接起来,使得功能不再受限于主控本身。主控既从其他设备获取信息,也将自己的信息传递给其他设备。如果通信没处理好,将直接影响整个系统的功能,由此可见通信技术的重要性。
常见的通信协议有**UART,I^2C,1-Wire**等。这里先简单介绍一些通信的基本概念
串行/并行
按照数据传输的方式,通信可以分为串行通信和并行通信。串行通信简单的说就是数据一次传输。并行就是几个数据一起传输。如下图
由此可见,串行传输占用的通信线更少,成本低,通信速度相对较慢;并行传输占用通信线多,成本高,通信速度相对较快。但是随着对速度要求越来越高,并行传输开始出现信号之间的干扰,串行通信受干扰影响较小,之后又发展了差分传输等技术,极大提高了串行传输速率,使得串行通信速度可能比并行速度更快。 并行因为各通信线相隔较近,传输速率过快,随之相互干扰也就越强。
全双工/半双工/单工
按照数据的传输方向,通信又可以分为全双工、半双工、单工。全双工指双方都可以同时收发信息;半双工双方都可以收发信息,但是同一时刻只能一方发送信息;单工指的就是一方只能发信息,另一方只能接收信息。
例子:全双工:电话 半双工:对讲机 单工:电报机 
同步和异步
按数据同步的方式,通信可以分为同步通信,异步通信。数据在双方之间传输时,需要指定规则保证数据传输的准确。
同步通信:在数据传输双方,加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常见的SPI,I^2C。
异步通信:对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号,双方就按照这个规则传输数据,比如UART,1-wire。
因此完全可以看是否有时钟信号,来判断是同步传输还是异步传输。
通信速率
对于同步通信,通信速率由时钟信号决定,时钟越快,传输速度就越快。
对于异步通信,需要收发双方统一通信速率,这也就是我们进行串口调试时,波特率不对显示乱码的原因。
时钟对于通信的重要性例子:假设发送端时钟频率为1MHz,对应时钟周期则为1us,接收端时钟频率为10MHz,对应时钟频率就是0.1us。现在发送端发送一个数据0x1,就会产生持续时间为1us高电平,接收端接收到这个1us的高电平,会当作10个0.1us的高电平,认为收到了10个0x1.这时数据就乱套了,因此需要一个统一的时钟标准。
电平标准
说到串口,经常提到TTL,RS422、RS232,RS485,简单的说,就是为了适应不同的环境条件,使用了不同的电平标准。假如微处理器和板载的蓝牙透传模块通信时,一般使用的就是TTL电平,引脚直接连接即可。假如微处理器在工业现场,需要连接一个几十米外的装置,则应该考虑将TTL电平转换为RS232、RS485,RS422。
常见通信接口标准 
硬件设计

 UART4_RX(PA11)和UART4_TX(PA12)经过缓冲器(U5)接到了串口转USB芯片(U6),得到USB信号通过Type-C(J5)连接到电脑。 
正常开发时,UART4默认用于A7的Linux信息输出,因此用户只能将UART8分配给M4,用于M4外接模块或则外接TTL转USB设备。但是这次实验就先用UART4.

IDE设计
MX设置

 为了串口能够打印float类型 
代码设计
uart_init.c 
主函数 
实验现象

|