最近在研究MCU的串口相关功能,其中涉及到使用串口上传程序的问题。
于是,我就拿手里的Arduino Uno R3板子来做了一个实验。根据在网上搜到的信息,貌似原始Aruino 主力板子和现代的一些Arduino兼容板都是支持用的串口线或TTL串口(这两者电平不一样,TTL接口的电平控制在0-5v,所以Arduino板子不能直接使用电脑原生的RS232串口),虽然Uno连接上位机的接口是一个USB-B接口,但是实际上是个挂羊头卖狗肉的,因为它的电平信号及协议进去会被改成TTL串口。由于Uno的digital pin 01和 02 是RX和TX,是的,他们就是TTL的RXD和TXD,而且跟板子上的TX、RX灯联动,所以它们实际上就是跟Uno那个数据接口内的TTL的RX和TX基本是等价的(逻辑和物理)。
既然可以通过usb线给uno上传程序,那么应该也可以直接使用uno的RX/TX给板子上传。事实上在PC里面你可以看到UNO连上后是COM对象,Arduino IDE里面也是这样表示的。
其实标题的原理前要加“大概”二字,只能说是写写个人经验和理解。另外,有人可能会问,既然Uno已经有了USB转串口,那还用TTL去上传不是多此一举么?这其实就是一个方法验证,在实际应用场合中,连接的情况组合会有很多种,也不一定所有场合都适合使用USB线,比如你通过无线串口去远程更新程序。废话不多说了,开始!