第一节 硬件解读
大家的开发板到手之后,可以看见,只有一个USB口,那个口就是串口,开发板A和开发板B共用一个串口,通过按键切换。
我们以开发板A为例,原理图如下:
开发板A芯片上面的PA2和PA3分别是NODEA_USART_TX和NODEA_USART_RX,而开发板A和Debugger开发板的连接如下:
通过查看CH443K芯片的引脚可以得到,SEL引脚的高低电平,可以让CH443K芯片在1脚4脚连接或者3脚4脚连接中选择。CH443K芯片引脚说明如下:
当CH443K芯片的SEL为高电平时,其芯片COM和CH1引脚导通。DEBUGGER_TX和B_TX导通,DEBUGGER_RX和B_RX导通;反之DEBUGGER_TX和A_TX导通,DEBUGGER_RX和A_RX导通。
那么,DEBUGGER_TX和DEBUGGER_RX连接在哪?当然是DAPLINK板的MCU上面啦,如下图:
连接到Debugger板的MCU之后,这个MCU通过内部程序(不需要我们写,比赛的时候已经写好了)转到唯一的USB口上,也就是我们的串口上。
第二节 CuebMX的配置
第一步:选择PA2的引脚的USART2_Tx功能,如下图:
第二步:选择PA3引脚的USART_RX功能,如下图:
第三步:发现USART相关的引脚是黄色的,不是绿色的,这是为什么呢?注意:黄色是异常提醒,绿色是正常的。
第四步:如下图配置USART2。注意:2代表的是异步全双工通信;6代表波特率,数据长度,校验位和停止位。这里波特率是115200,比赛基本上都是9600。
其中:具体Mode配置信息如下:
Mode:代表串口模式,配置为(异步)Asynchronous,(同步主机)Synchronous Master,(同步从机)Synchronous Slave,(单线半双工)Single Wire (Half - Duplex),(多处理器通信)Multiprocessor Communication,(红外通讯)IrDA ,(局域互联网模式)LIN ,(智能卡模式)SmartCard ;
Hard Flow Control RS232:代表RS232的硬件控制流,常用引脚为CTS,RTC,CTS/RTS或者Disabled;
Hard Flow Control RS485:代表RS485的硬件控制流;
其中:具体Configuration配置信息如下:
Baud Rate:代表串口波特率,常用波特率为9600,115200等;
Word Length:代表字节位,常用字节为:7位,8位或者9位;
Parity:代表校验位;常用为:(无校验)None,(奇校验)Even或者Odd(偶校验)Odd;
Stop Bits:代表停止位,常用为:0.5,1,1.5或者2;
Data Direction:代表数据传输方向,常用为(发送和接收)Receive and Transmit,(接收)Receive或者(发送)Transmit;
Over Sampling:代表过采样,常用为8倍采样和16倍采样,8倍采样,也就是一个数据位采样8次,16倍则是16次。采样率高精度会高一些,当然相应的功耗也会变高;
Single Sample:代表单次采样,使能时使用单次采样值,否则使用三次采样值。前面的过采样会有8或16次采样值,当选择单次采样时,会使用其中的一次采样值作为数据位逻辑电平的结果。三次采样则用三次采样的判断结果为准。同样三次采样也是为了确保数据的准确性。
ClockPrescaler:代表时钟预分频器;
Fifo Mode:代表数据缓存模式;
Txfifo Threshold:代表发送数据的阈值;
Rxfifo Threshold:代表接收数据的阈值;
Auto Baudrate:代表自动波特率,顾名思义,可以根据接收到的数据进行波特率自适应;
TX Pin Active Level Inversion:代表发送电平反转,发送引脚电平极性反转,正常情况下空闲电平为高电平,使能该功能后变成空闲电平为低电平;
RX Pin Active Level Inversion:代表接收电平反转,接收引脚电平极性反转,正常情况下空闲电平为高电平,使能该功能后变成空闲电平为低电平;
Data Inversion:代表数据电平反转收发数据的逻辑电平极性反转,正常是高电平为逻辑1,低电平为逻辑0,使能该功能后则变成低电平为逻辑1,高电平为逻辑0。校验位也随着反转;
TX and RX Pins Swapping:代表收发引脚互换,接收和发送引脚互换,适用于外部硬件连线错误时进行切换。
Overrun:代表溢出检测,:用于开启接收溢出检测,使用该功能后,当接收数据未取出时,又接收到一个数据,此时会触发一个溢出标志。
DMA on RX Error:代表接收错误时不禁用DMA,使能该功能后,即使出现接收错误也不会关闭DMA传输;
MSB First:代表数据高位先发,正常数据是先发低位再发高位,使能该功能后可以先发高位数据;
第三节 MDK代码
第一步:编写串口发送函数,如下图:
第二步:声明串口发送函数,如下图:
第三步:编写主函数,如下图:
第四步,配置MicroLIB库,如下:【注意:不使用printf,可以不配置;如果使用printf但是不配置,程序将卡死】
第五步:配置好下载器之后,编译代码,下载即可。
第六步:打开串口软件,如下图配置:选择串口号;接收缓存区选择HEX模式,波特率选择115200;串口号请扫描,选择正确的串口号,不一定是COM4;最后打开串口。
第四节 实验现象
注意:
1,请用USB线连接电脑与开发板;
2,请选择A开发板;
3,一定要勾选微库。
现象:
1,串口发送以115200波特率发送数据。
来源:撞上电子微信公众号
版权:东莞市东城墨竹公子电子工作室
日期:2024.11.13
第五节 课后作业
利用按键,串口打印按键按下的次数。
-
STM32
+关注
关注
2271文章
10923浏览量
357225 -
串口
+关注
关注
14文章
1557浏览量
76922 -
开发板
+关注
关注
25文章
5121浏览量
98038
发布评论请先 登录
相关推荐
评论