静态网站福州最好的网站建设
2026/5/31 11:45:21 网站建设 项目流程
静态网站,福州最好的网站建设,wordpress主題很慢,银川住房和城乡建设局网站通信概念电信号传输方式在数据的传输过程中主要是通过电信号进行传输的#xff0c;电信号通过物理介质#xff08;如导线、光纤、空气等#xff09;从发送端传递到接收端的技术范式#xff0c;其核心差异体现在信号载体形式、传输介质、抗干扰能力、传输距离等维度。根据电…通信概念电信号传输方式在数据的传输过程中主要是通过电信号进行传输的电信号通过物理介质如导线、光纤、空气等从发送端传递到接收端的技术范式其核心差异体现在信号载体形式、传输介质、抗干扰能力、传输距离等维度。根据电信号的本质特征和工程应用场景可将其分为以下几大类电平信号概念以 “单个信号线上的电平值” 相对 “公共地线GND” 的电压差来表示逻辑0/1或模拟量可以理解为“用一根线传递信号另一根线传递‘基准 0 点’地线接收端通过对比信号线与地线的电压差判断信号含义”。差分信号概念以 “两根互补信号线如 A、A-或 D、D-之间的电压差” 来表示逻辑0/1或模拟量不依赖公共地线两根线的信号幅度相等、极性相反。可以理解为“用两根线传递‘相反的信号’接收端通过计算两根线的电压差判断信号含义 —— 外部噪声会同时耦合到两根线差值抵消从而消除干扰”。电平信号和差分信号的区别电平信号✅ 优点线路简单仅需 2 线、成本低、实现容易❌ 缺点抗干扰能力弱地线噪声会直接影响信号、传输距离短通常 10 米应用场景开发板内部通信采用电平信号如串口通信TTL\RS232、SPI、IIC等差分信号✅ 优点抗干扰能力极强外部噪声会同时耦合到两根线差值抵消、传输距离远可达百米级❌ 缺点线路复杂需 2 线、成本略高、需差分芯片处理应用场景开发板与外部设备通信采用差分信号如RS485串口通信、以太网、USB、CAN等通信划分对于有线通信中按照不同的通信维度划分了多种通信类别​​​​​​​通信方向划分单工要么收要么发只能做接收设备或者发送设备一根信号线只能单向发送或单向接收。比如收音机半双工可以收可以发但是不能同时收发一根信号线可以接收数据也可以发送数据但是两者不能同时进行比如对讲机全双工可以在同一时刻既接收又发送两根信号线一根发送数据另一根接收数据真正实现同时收发数据速度快比如手机打电话​​​​​​​通信方式划分串行通信指的是同一时刻只能收或发一个bit位信息。因此只用1根信号线即可。数据一位一位串起来逐个传输数据按位顺序传输。优点占用引脚资源少缺点速度相对较慢并行通信指的是同一时刻可以收或发多个bit位的信息因此需要多根信号线才行使用多根线同时传输一个字的多个位如 8 根线一次传输 8 个位。优点速度快缺点占用引脚资源多应用像屏幕显示用的是并行​​​​​​​时钟信号划分同步通信发送方和接收方通过同一时钟信号来协调数据传输节奏确保双方同步的读取 / 发送数据时钟信号由主机产生从机被动同步。异步通信发送方和接收方无共用时钟信号有自己独立的时钟信号通过预设的波特率数据传输速率和起始 / 停止位来实现数据通信双方需提前约定波特率允许微小误差。因此同步通信和异步通信主要区别就看有没有时钟线(SCL/SCK)uart串行异步全双工 SPI串行同步全双工IIC串行同步半双工 单总线串行异步半双工串口通信在串口通信中主要包含两类UART和USART(通用同步sync/异步async收发器)他们主要区别是USART: 支持同步\异步通信、全双工、串行UART 没有时钟线只支持异步通信、全双工、串行在串口通信如UART协议中TXD和RXD是两条核心数据传输线分别代表发送数据Transmit Data和接收数据Receive Data​​​​​​​协议格式在通信中数据的交互需要遵循一定的格式接收方才能按照规定的格式进行接收并解析数据协议格式也叫数据帧或帧格式传输过程空闲状态默认为高电平开始传输数据时将电平拉低表示起始位接下来传输实际数据遵循低位先行原则校验位根据用户设置确定是否有校验位最后数据传输结束把电平拉高表示停止位。起始位表示要开始发送数据占1位数据位表示通信中数据位的个数一般位5、7、8位。对于stm32u5数据位为7、8、9位通过cubemx配置串口属性能看到校验位在串口通信中一种简单的检错方式。一般不设置因为校验位不能完全保证数据无误传输。奇校验就是让原有数据序列中包括你要加上的一位1的个数为奇数如10001100偶校验就是让原有数据序列中包括你要加上的一位1的个数为偶数如10001101停止位数据传输结束标志停止位典型的值为1、1.5和2位。波特率数据传输的速率指每秒数据传输的位数单位为bit/s常见的波特率9600bit/s、115200bit/s​​​​​​​USART框图UART数据发送和接收的过程发送过程由CPU或DMA向数据发送寄存器TDR中写入要发送的数据由发送移位寄存器将数据按位移到发送端口输出。接收过程通过端口接收到的数据先存入接收移位寄存器中将移位寄存器中数据存入数据接收寄存器再由CPU或DMA读取接收数据寄存器RDR中的数据。注意如果CPU发送数据过快会出现数据被覆盖情况此时需要通过ISR中断和状态寄存器来标志数据是否可以发送。USART寄存器​​​​​​​中断和状态寄存器USART_ISR第七位TXFNF发送数据标记当发送数据寄存器为空此位为1也就是数据写入到发送数据寄存器之后发送数据到移位寄存器从发送数据寄存器中将数据全部移走之后ISR第七位置1TXFNF为1时表示可以往TDR写数据第五位RXFNE接收数据标记当接收数据寄存器非空这个位置为1数据被接受数据移位寄存器搬到接收数据寄存器中以后ISR第五位置1RXFNE为1表示可以读取RDR中数据​​​​​​​数据发送寄存器USART_TDR决定发送的数据将要发送的数据写入0-8位有效u5可以发送的数据位是7、8、9位​​​​​​​数据接收寄存器USART_RDR决定接收的数据将要接收的数据进行读取​​​​​​​原理图分析找到核心板的typec口丝印为J4这个是usart1CH340E是电平转换芯片将USB差分信号转换为TTL电平信号​​​​​​​cubemx配置​​​​​​​代码实现while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */USART1-TDRA;HAL_Delay(1000);}printf重定向int printf(const char * format,...)在Linux中实现向终端输出时使用了printfprintf函数底层调用的是fputc函数fputc是将要发送的数据写入到标准输出流stdout因此如果想让printf将数据输出到串口需要重写fputc函数原型int fputc(int /*c*/, FILE * /*stream*/)这里的fputc是一个弱函数前面有weak修饰。WEAK弱符号weak 顾名思义是“弱”的意思所以如果函数名称前面加上__weak 修饰符我们一般称这个函数为“弱函数”。加上了__weak 修饰符的函数用户可以在用户文件中重新定义一个同名函数最终编译器编译的时候会选择用户定义的函数如果用户没有重新定义这个函数那么编译器就会执行__weak 修饰的函数并且编译器不会报错。步骤在keil5中如果使用C库相关函数需要勾选上微库勾完这个库后必须全部编译要不会报以下两个错误添加stdio.h头文件并实现重定向#includestdio.hintfputc(intch,FILE*p){while(!(USART1-ISR17));//等待TDR为空即TXE置1跳出while然后往TDR中放数据USART1-TDRch;}intmain(){printf(hello world);HAL_Delay(1000);}​​​​​​​HAL库实现通信​​​​​​​​​​​​​​代码实现uint8_t buf[32];/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */HAL_UART_Receive(huart1,buf,sizeof(buf),100);HAL_UART_Transmit(huart1,buf,sizeof(buf),100);memset(buf,0,sizeof(buf));}​​​​​​​​​​​​​​

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询