MAX232芯片是美信(MAXIM)公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。
简言之,你的电脑已经有RS232接口,使用MAX232芯片可以实现单片机和PC机通过串口进行通信,当然也能下载程序。
问题是现在的笔记本已经没有了RS232接口,肿么办?ch340是USB转串口芯片,有了它,可以模拟出来一个串口,实现单片机和PC机通过串口进行通信,当然也能下载程序。
这里我只能给你分析前后两者的区别,至于为什么会出现乱码还需要综合你程序的其他部分来分析。
首先了解STM32串口发送数据的简单过程,如下图所示。
发送:软件将数据写到USARTx->DR里面,硬件自动把USARTx->DR里面的数据并行转移到“发送一位寄存器”,然后硬件自动将发送一位寄存器中的数据通过TX引脚串行发送出去。
接收:RX上有数据过来,则先将数据一位一位的放到“接收移位寄存器”里面,收满一个字节后,硬件自动将“接收移位寄存器”里面的数据并行转移到USARTx->DR里面。
while (!(USART1->SR & USART_FLAG_TC));这句是等待数据完完全全从“发送移位寄存器”中发送出去,while (!(USART1->SR & USART_FLAG_TXE));这句是等待数据从USARTx->DR转移到“发送移位寄存器”中。在后一句的写法中,并不需等待数据完全发送,只需要USARTx->DR里面的数据已经被转移走,就可以马上进行再次写入USARTx->DR *** 作,这样是不是就可以节省很多时间了?
至于出现乱码,你需要综合其他的代码来进行分析。
通信 有 两方,如果由对方来定义通信协议,那么你只能匹配对方的波特率,如果你来定义通信协议,那么就考虑通信内容,如果要数据速度要求高那么 波特率就得选高,反之就要选低。举个例子,比如波特率是19200那么每秒就传输19200BIT数组(如果,起始位1,停止位1,无校验位,那么每秒传输1920BYTE数据)根据要求,你可以大概算出需要什么样的波特率。在满足要求的情况下波特率越低,数据的误码率越低,通信越有质量。另外如果通信线的屏蔽做的不好,两方的距离不要超过5M串行接口简称串口,也称串行通信接口或串行通讯接口(通常指COM接口),是采用串行通信方式的扩展接口。其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
从两者之间的定义就可以看得出:串口是个物理接口,端口是个逻辑窗口。怎么理解呢?以我们经常用的电脑为例—我们电脑有很多串口,比如RS232,RS485等等,这些就是串口,本身就在一种接口。那逻辑窗口是什么呢?请大家回忆一下学习51单片机的时候(或者stm32时候用FlyMC)下载程序的时候,是不是要选一个COM?这个COM不是固定的,你插上它就有,不插就没有,这就是它为什么是一个逻辑值的原因。通俗的说,端口只是串口的一个标识ID而已,不同的ID对应着不同的连接口。任何一个芯片都要在有电的时候去工作,那么它必然就有一个VCC,一个GND,这个VCC和GND就是两个引脚,除了这些,还有一些其他的引脚,比如RST,普通的IO都是引脚。AVR系列单片机烧录程序的方法大概有以下三种:使用ISP编程器对芯片进行在线烧录、专业高压编程器烧录、通过JTAG接口使用JTAG仿真器烧录。但是它们都有一个共同的特点:但是总是要借助于其他设备或者编程器,下载稍嫌麻烦,本文笔者给大家介绍如果通过PC机的普通串口给AVR芯片烧录程序,本文以ATMega16为例。
相信大家都用过STC系列的51单片机,STC系列的单片机烧录程序都很简单,只需要通过串口就可以实现程序的烧录。于是就想让AVR的芯片也能实现通过串口就能下载的功能,这样就可以省去购买UsbAsp下载
图1线或者高压编程器的费用,而且使用更加方便。仔细研究AVR的芯片手册,就会发现常用的一些AVR芯片如:ATMega16、ATMega32等都是带有BootLoader功能的,这个BootLoader功能可以读写芯片的整个FLASH存储区,甚至可以改写BootLoader区,而且还有另外一个特点:如果BootLoader功能开启以后,每次复位都会从BootLoader 启动。
于是就有一个大概的思路了,可以给AVR的芯片写一个BootLoader的串口通信程序,每次复位以后BootLoader 区的程序就会得到运行,运行以后首先检测是否有烧录请求,如果有就更新FLASH中的程序,如果没有烧录请求,则执行FLASH中原有的程序。经过几天的努力这个通过串口给ATMega16烧录程序的固件和上位机终于完成了。就是个串口功能啊,你要是问的是UART和USART的区别,那么
UART:universal asynchronous receiver and transmitter通用异步收发器;
USART:universal synchronous asynchronous receiver and transmitter通用同步异步收发器。一般而言,单片机中,名称为UART的接口一般只能用于异步串行通讯,而名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯。
至于串口的功能,就是通过数据的传输来实现通信的目的。esp8266是一个功能强大的wifi模块,也自带的一块单片机,可以实现简单的功能。但很多时候仅仅是把esp8266当成WIFI或热点来收发数据,将数据通过rx和tx串口发送给单片机。再由单片机处理数据。电脑一般是给单片机烧写程序,或调一些单片机不能给esp8266设置的参数。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)