| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> Arduino Uno R3 double ports communication -> 正文阅读 |
|
[嵌入式]Arduino Uno R3 double ports communication |
IntroductionAim 目标ObjectivesDevice 设备Arduino UnoArduino Uno 是一款基于 微控制器 ATmega328P的开发板。它有14个数字输入/输出引脚(这些引脚中有6个引脚可以作为PWM输出引脚),6个模拟输入引脚,16 MHz石英晶振,USB接口,电源接口,支持在线串行编程以及复位按键。用户只需要将开发板与电脑通过USB接口连接就可以使用。 在Arduino开发板家族中,Uno开发板是最适合初学者的Arduino开发板。由于它简单易学、稳定可靠,Uno开发板也是应用最为广泛且参考资料最多的开发板。
Technical specifications 技术规格
General pin functions 通用引脚功能
Special pin functions 特殊引脚功能Each of the 14 digital pins and 6 analog pins on the Uno can be used as an input or output, under software control (using pinMode(), digitalWrite(), and digitalRead() functions). They operate at 5 volts. Each pin can provide or receive 20 mA as the recommended operating condition and has an internal pull-up resistor (disconnected by default) of 20-50K ohm. A maximum of 40mA must not be exceeded on any I/O pin to avoid permanent damage to the microcontroller. The Uno has 6 analog inputs, labeled A0 through A5; each provides 10 bits of resolution (i.e. 1024 different values). By default, they measure from ground to 5 volts, though it is possible to change the upper end of the range using the AREF pin and the analogReference() function.
Communication 通信The Arduino Uno has a number of facilities for communicating with a computer, another Arduino board, or other microcontrollers. The ATmega328 provides UART TTL (5V) serial communication, which is available on digital pins 0 (RX) and 1 (TX). An ATmega16U2 on the board channels this serial communication over USB and appears as a virtual com port to software on the computer. The 16U2 firmware uses the standard USB COM drivers, and no external driver is needed. However, on Windows, a .inf file is required. Arduino Software (IDE) includes a serial monitor which allows simple textual data to be sent to and from the board. The RX and TX LEDs on the board will flash when data is being transmitted via the USB-to-serial chip and USB connection to the computer (but not for serial communication on pins 0 and 1). A SoftwareSerial library allows serial communication on any of the Uno’s digital pins. Arduino Uno有许多与计算机、另一个Arduino板或其他微控制器通信的设施。ATmega328提供UART TTL (5V)串行通信,可在数字引脚0 (RX)和1 (TX)上使用。板子上的ATmega16U2通过USB通道进行串行通信,并作为虚拟串口出现在计算机上的软件上。16U2固件采用标准USB COM驱动,不需要外部驱动。然而,在Windows上,需要一个.inf文件。Arduino软件(IDE)包括一个串行监视器,允许简单的文本数据被发送到和从板。当数据通过USB到串行芯片和USB连接到计算机时,板上的RX和TX led将闪烁(但不用于在引脚0和1上的串行通信)。软件串行库允许在任何Uno的数字引脚上进行串行通信。 USART 通用同步/异步串行接收/发送器
USART is a full-duplex universal synchronous/asynchronous serial transceiver module, the interface is a highly flexible serial communication device. USART是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。 Structure 结构The clock generator consists of a synchronous logic circuit (driven by an external clock input in synchronous slave mode) and a baud rate generator. The sending clock pin XCK is only used in synchronous sending mode, 时钟发生器由同步逻辑电路(在同步从模式下由外部时钟输入驱动)和波特率发生器组成。发送时钟引脚XCK仅用于同步发送模式下, Clock generation The clock generation logic generates basic clocks for the transmitter and receiver. The USART supports 4 clock modes: normal asynchronous mode, double-speed asynchronous mode, master synchronous mode, and slave synchronous mode. The USART control bit UMSEL and status register C (UCSRC) are used to select asynchronous mode and synchronous mode. Double speed mode (only applicable to asynchronous mode) is controlled by U2X in UCSRA register. When using synchronous mode (UMSEL = 1), the data direction register (DDR_XCK) of XCK determines whether the clock source is generated internally (master mode) or externally (slave mode). XCK is valid only in synchronous mode. 时钟产生时钟产生逻辑为发送器和接收器产生基础时钟。USART 支持4 种模式的时钟: 正常的异步模式,倍速的异步模式,主机同步模式,以及从机同步模式。USART 控制位UMSEL和状态寄存器C (UCSRC) 用于选择异步模式和同步模式。倍速模式( 只适用于异步模式) 受控于UCSRA 寄存器的U2X。使用同步模式 (UMSEL = 1) 时,XCK 的数据方向寄存器 (DDR_XCK)决定时钟源是由内部产生(主机模式)还是由外部生产(从机模式)。仅在同步模式下XCK 有效。 On-chip clock generation-The internal clock of the baud rate generator is used in asynchronous mode and synchronous master mode. 片内时钟产生-波特率发生器内部时钟用于异步模式与同步主机模式。 The baud rate register UBRR of USART is connected with the descending counter to form a programmable prescaler or baud rate generator. The descending counter counts the system clock, and when it counts to zero or the UBRRL register is written, it will automatically load the value of the UBRR register. When the count reaches zero, a clock is generated. This clock is used as the output clock of the baud rate generator. The frequency of the output clock is fosc/(UBRR+1). The generator divides the output clock of the baud rate generator by 2, 8 or 16, depending on the working mode. The output of the baud rate generator is directly used in the receiver and data recovery unit. The data recovery unit uses a state machine with 2, 8 or 16 states. The specific number of states is determined by the working mode set by the UMSEL, U2X and DDR_XCK bits. USART 的波特率寄存器UBRR 和降序计数器相连接,一起构成可编程的预分频器或波特率发生器。降序计数器对系统时钟计数,当其计数到零或UBRRL 寄存器被写时,会自动装入UBRR 寄存器的值。当计数到零时产生一个时钟,该时钟作为波特率发生器的输出时钟,输出时钟的频率为fosc/(UBRR+1)。发生器对波特率发生器的输出时钟进行2、8或16 的分频,具体情况取决于工作模式。波特率发生器的输出被直接用于接收器与数据恢复单元。数据恢复单元使用了一个有2、8或16个状态的状态机,具体状态数由UMSEL、U2X 与 DDR_XCK 位设定的工作模式决定。 时钟发生器的内部结构 USART Block Diagram Register 寄存器
UBRRn寄存器值Equations for Calculating Baud Rate Register Setting interrept 中断接收完成( Principle 原理Serial Communication 串口通信In telecommunication and data transmission, serial communication is the process of sending data one bit at a time, sequentially, over a communication channel or computer bus. 在通信和数据传输中,串行通信是在通信通道或计算机总线上按顺序一次发送一位数据的过程 串行接口是一种可以将接收来自CPU的并行数据字符转换为连续的串行数据流发送出去,同时可将接收的串行数据流转换为并行的数据字符供给CPU的器件。一般完成这种功能的电路,我们称为串行接口电路。输的数据格式由起始位、数据位、奇偶校验位和停止位组成。 Baud 波特率即调制速率,指的是有效数据讯号调制载波的速率,即单位时间内载波调制状态变化的次数。波特率表示单位时间内传送的码元符号的个数,它是对符号传输速率的一种度量,它用单位时间内载波调制状态改变的次数来表示。 Data bit数据位这是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据往往不会是8位的,标准的值是6、7和8位。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。Arduino默认使用8位数据位,即每次可传输1B数据. Stop bit停止位用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。 Arduino默认是1位停止位. Parity 奇偶校验位在串口通信中一种简单的检错方式。有四种检错方式:偶、奇、高和低。对于偶和奇校验的情况,串口会设置校验位(数据位后面的一位),用一个值确保传输的数据有偶个或者奇个逻辑高位。高位和低位不真正的检查数据,简单置位逻辑高或者逻辑低校验。这样使得接收设备能够知道一个位的状态,有机会判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。Arduino默认无校验位. RS-232标准在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称EIARS-232-C)是目前最常用的一种串行通讯接口。该标准规定采用一个25个脚的DB-25连接器,对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。 HardwareSerial 硬件串口通信硬件串口的操作类为HardwareSerial,定义于
SoftwareSerial 软件串口通信软串口的操作类为SoftwareSerial,定义于SoftwareSerial.h源文件中,但不像硬串口那样,源文件中并没有事先声明软串口对象,Arduino程序中需要手动创建软串口对象。在使用前需要先声明包 软串口通过AVR芯片的PCINT中断功能来实现,在Arduino UNO 上,所有引脚都支持PCINT中断,因此所有引脚都可设置为软串口的RX接收端。但在其他型号的Arduino上,并不是每个引脚都支持中断功能,所以只有特定的引脚可以设置为RX端。
System Design设计两个arduino开发板之间进行双通道串口通信,输入模拟信号,输出数字信号。通道一利用开发板提供的硬件串口通信进行传输,通道二使用自定义类模板的软件串口通信进行传输。
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:39:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |