当前位置:网站首页>Learning record: USART serial communication
Learning record: USART serial communication
2022-07-06 15:33:00 【Bitter tea seeds】
Catalog
1. Introduction to serial communication protocol
3.printf Support code for function
1. Introduction to serial communication protocol
For communication protocols , We also understand it in a hierarchical way , The most basic thing is to divide it into Physical layer and protocol layer . The physical layer specifies that the communication system has mechanical 、 The characteristics of the electronic functional part , Ensure the transmission of raw data on physical media . The protocol layer mainly specifies the communication logic , Unify the data packaging of both sender and receiver 、 Unpacking standard .
1.1 The physical layer
It's about understanding :RS-232 standard ,RS-232 The standard mainly stipulates The signal Use of 、 Communication interface and signal level standard .

Use RS-232 Common among standard serial port devices Communication structure , As shown in the figure below

In the communication mode above , Two communication devices “DB9 Interface ” The connection between them is established through the serial signal line , Used in serial port signal line “RS-232 standard ” Transmitting data signals . because RS-232 The level standard signal cannot be directly recognized by the controller , So these signals go through a “ Level conversion chip ” Convert to something the controller can recognize “TTL standard ” The level of the signal , To communicate .
1.2 Level standard
According to the level standard used in communication , Serial communication can be divided into TTL Standards and RS-232 standard ;

It is often used in common electronic circuits TTL The level standard of , ideally , Use 5V Represents binary logic 1, Use 0V To express logic 0; In order to increase the ability of long-distance transmission and anti-interference of serial communication ,RS-232 Use -15V To express logic 1, +15V To express logic 0. Use RS232 And TTL Level calibration represents the comparison of the same signal , As shown in the figure below .

Because controllers generally use TTL Level standard , So we often use MA3232 Chip pair TTL And RS-232 Level signals are converted to each other .
2. Protocol layer
The data packet of serial communication is sent by the sending device through its own TXD Interface to the receiving device RXD Interface . In the protocol layer of serial communication , Specifies the content of the packet , It starts from the beginning 、 Subject data 、 Check bit and stop bit , The data packet format of both communication parties shall be consistent in order to send and receive data normally ,

3.printf Support code for function
// Add the following code , Support printf function , You don't need to choose use MicroLIB
#if 1
#pragma import(__use_no_semihosting)
// Support functions required by the standard library
struct __FILE
{
int handle;
};
FILE __stdout;
// Definition _sys_exit() To avoid using semi host mode
void _sys_exit(int x)
{
x = x;
}
// redefinition fputc function
int fputc(int ch, FILE *f)
{
while((USART1->SR&0X40)==0);// Cycle to send , Until it's sent
USART1->DR = (u8) ch;
return ch;
}
#endif 4.usart.h Program
Define the maximum number of bytes received 200;
#define USART_REC_LEN 200
Receive buffer , Maximum USART_REC_LEN Bytes . The last byte is a newline character ;
extern u8 USART_RX_BUF[USART_REC_LEN]; Receive status flag ;
extern u16 USART_RX_STA;Can make (1)/ prohibit (0) A serial port 1 receive ;
#define EN_USART1_RX 1 usart.c and usart.h Function program in column Stm32 In the study notes Blog 《 Learning record : Serial communication and solutions to errors encountered 》 Yes .
5.main.c The main function
#include "led.h"
#include "delay.h"
#include "key.h"
#include "sys.h"
#include "usart.h"
int main(void)
{
u16 t;
u16 len;
u16 times=0;
delay_init(); // Delay function initialization
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); // Set up NVIC Interrupt grouping 2:2 Bit preemption priority ,2 Bit response priority
uart_init(115200); // The serial port is initialized to 115200
LED_Init(); //LED Port initialization
KEY_Init(); // Initialize the hardware interface connected with the key
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;// The length of data received this time
printf("\r\n The message you sent is :\r\n\r\n");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]);// Serial port 1 send data
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);// Wait for the end of sending
}
printf("\r\n\r\n");// Insert newline
USART_RX_STA=0;
}
else
{
times++;
if(times%5000==0)
{
printf("\r\n Focus on Bitter tea seeds\r\n");
printf("USART— A serial port communication \r\n\r\n");
}
if(times%200==0)printf(" Please input data , End with enter \n");
if(times%30==0)LED0=!LED0;// flashing LED, Indicates that the system is running .
delay_ms(10);
}
}
}
First, determine the global variables USART_RX_STA Whether the highest position of is 1, If 1 Words , Then it means that the previous data reception has been completed , The next step is to send our customized receive buffer data to the serial port .
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);The above code is after we send a byte , To check whether this data has been sent .
6. Experimental phenomena

边栏推荐
- Research Report of pharmaceutical solvent industry - market status analysis and development prospect prediction
- ucore lab5
- Lab 8 file system
- 几款开源自动化测试框架优缺点对比你知道吗?
- ucorelab3
- ucore lab 6
- LeetCode#36. Effective Sudoku
- 软件测试Bug报告怎么写?
- Brief description of compiler optimization level
- China medical check valve market trend report, technical dynamic innovation and market forecast
猜你喜欢

学习记录:串口通信和遇到的错误解决方法

ucore lab5
How to do agile testing in automated testing?

Learning record: Tim - capacitive key detection

Your wechat nickname may be betraying you

STM32学习记录:输入捕获应用

JS --- BOM details of JS (V)

Nest and merge new videos, and preset new video titles

C4D quick start tutorial - creating models

Servlet
随机推荐
Introduction to safety testing
MATLAB实例:阶跃函数的两种表达方式
[200 opencv routines] 98 Statistical sorting filter
ArrayList set
Example 071 simulates a vending machine, designs a program of the vending machine, runs the program, prompts the user, enters the options to be selected, and prompts the selected content after the use
JS --- detailed explanation of JS DOM (IV)
Contest3145 - the 37th game of 2021 freshman individual training match_ A: Prizes
China medical check valve market trend report, technical dynamic innovation and market forecast
软件测试面试回答技巧
How to become a good software tester? A secret that most people don't know
学习记录:理解 SysTick系统定时器,编写延时函数
STM32學習記錄:輸入捕獲應用
Introduction to variable parameters
软件测试方法有哪些?带你看点不一样的东西
UCORE Lab 1 system software startup process
Leetcode notes - dynamic planning -day6
Your wechat nickname may be betraying you
pytest
ucore lab6 调度器 实验报告
Crawling cat's eye movie review, data visualization analysis source code operation instructions