英语原文共 221 页,剩余内容已隐藏,支付完成后下载完整资料
第七章
串行通信
串行通信是一个非常广泛的主题,涵盖了众多格式,标准,习俗等。它指的是数据一次只传送一位数据的任何数字信号。 常见的例子包括USB(通用串行总线),数字电话线,电报,RS232(通常称为计算机上的串行端口),以太网和列表继续。 ATMega644p上有三个串行通信外设:SPI(串行外设接口),USART(通用同步/异步接收器发送器)和TWI(2线串行接口),也称为I2C(发音为I-C或I- 两个C)。
7.1 USART和RS232串行
USART(通用同步/异步接收器发送器)是最常用于与计算机或其他微控制器进行通信的外设。这是因为它使用另一个IC可以非常简单地转换成使用RS232标准的信号。第二块IC的目的是确保信号的电压电平在正负3-15伏之间,保护微控制器免受短路和接地,并为RS232标准中的其他引脚提供信号。
7.1.1 RS232
RS232串行通信标准由端口使用,通常使用25针D-sub连接器在台式机或笔记本电脑上使用“串行端口”。在这25个引脚中,只有10个被标准使用,而实际上只有两个传输数据。根据本标准进行通信的两台设备被分类为“数据终端设备”(DTE)或“数据通信设备”(DCE)。与台式计算机通信时,计算机将成为DTE,微控制器将成为DCE。表7.1列出了RS232使用的引脚及其分配。
引脚22上的振铃信号可以追溯到标准时间
名称 |
目的 |
简要 |
引脚# |
数据终端就绪 |
告诉DCE DTE已准备就绪 |
DTR |
20 |
连接 |
|||
数据载波检测 |
告诉DTE DCE已连接 |
DCD |
8 |
数据集就绪 |
告诉DTE DCE已准备好 |
DSR |
6 |
接收 |
|||
环指标 |
告诉DTE DCE已检测到 |
RI |
22 |
电话线上的振铃信号 |
|||
请求发送 |
告诉DCE准备接受 |
RTS |
4 |
来自DTE的数据 |
|||
清除发送 |
允许DTE传输 |
5 |
|
传输的数据 |
允许DTE传输 |
TxD |
2 |
收到数据 |
从DTE到DCE的数据线 |
RxD |
3 |
共同点 |
从DTE到DCE的数据线 |
GND |
7 |
保护地 |
PG |
1 |
|
表7.1:RS232标准的引脚分配。[5]
主要用于电传打字机和调制解调器之间的通信。 在更现代的情况下,引脚会触发一个硬件中断(参见第8章关于中断的信息),通知DCE为通信的可能性做准备。
由于RS232标准适用于与台式计算机和其他设备进行通信,因此它需要额外的硬件才能与AT-Mega644p以及其他大多数微控制器配合使用。 除了要求实际的端口外,MAXIM生产的MAX202CSE等RS232收发器还需要额外的电压源或电平转换器,具体取决于微控制器的工作电压。 这就是说,通过USART有两种和三种通信方式,实际上是用来与RS232收发器进行通信的。
7.1.2 USART
USART通常使用三线设置与其他设备(如微控制器和RS232收发器)进行通信。 其中两根导线用于实际通信(每个方向一根),第三根导线接地。 如果数据传输只需要一个方向,则第二条数据线可以保留o。 为每个方向使用单独的数据线确实允许全双工通信(数据同时发送和接收),但这不是必需的。
同步与异步通信
异步通信意味着只要准备就绪就可以发送信息,并且接收者无法期望传输到达特定的时间, 同步通信意味着发送器和接收器都准确知道每个字节何时开始和停止。 这要求不断传输数据以保持两台设备同步。 当没有要发送的数据时,ASCII“SYN”字符通常用作填充。 与最大可能的数据速率相比,所需的数据传输速率非常低,使用异步通信往往是更好的选择,因为它更健壮,更易于维护。
字符构筑
当使用USART时,每个字符都是一个单独的传输,每个字符具有可配置的位数。 通过USART传输的字符可以是5位到9位长的任何地方,最常见的是7位(ASCII字符)或8位(1字节)。 每个字符前面都有一个单独的起始位(逻辑低电平),后面跟着一个或两个停止位(逻辑高电平),并且可能在最后一位数据位之后和停止位之前包含一个奇偶校验位,总长度 的传输范围可以从7位到13位[5]。 至关重要的是,两个设备的配置使用字符长度(5-9),奇偶校验(无,偶数,奇数),停止位数(1或2)和数据速率的相同选项,否则会出现错误, 如果任何角色被接收者实际接受,他们可能会是乱码。
通信错误
如果在传输或接收期间发生问题,可能会检测到几个可能的错误
Overrun Error:在先前接收到的数据可以被处理之前接收到数据时发生。不同的设备有不同的容量来存储接收到的数据,并且如果增加这个错误被触发。 ATMega644p只能读取单个字符,因此在它到达后尽快读取该字符并使用它,忽略它或(很可能)存储它直到可以使用它是很重要的。
欠载错误:发送缓冲器为空并且US-ART已完成发送前一个字符时发生。一般来说,这被认为是表示没有任何数据正在传输,因为异步通信数据不需要持续传输。此错误可能表示同步通信中存在问题,因为欠载更严重。
帧错误:当开始位和停止位不正确对齐时发生。如果接收机没有找到预期的停止位,则会触发此错误,指示传输出现问题。如果这种情况经常发生,则可能表明这两个设备是针对不同的字符帧进行配置的。
奇偶校验错误:当奇偶校验计算与奇偶校验位不匹配时发生。 当奇偶校验使能并设置为偶数时,当字符中的偶数位为逻辑高电平时,或者当逻辑高位数为奇数且奇偶校验设为奇数时,奇偶校验位应为逻辑高电平。 如果该位与接收机的计算不匹配,则会抛出奇偶校验错误,指示接收数据中存在错误。 如果传输线特别噪声并且出现两位错误,那么即使数据不正确,它们也可以在奇偶校验计算中相互抵消并且奇偶校验计算将是正确的。[5]
7.1.3 USART通信示例
这是一个使用ATmega644p上的USART0的例子程序。 其目的仅仅是回应传送给它的任何内容,并立即将其传回。
- include lt; avr / io .h gt;
- include lt; util / delay .h gt;
# include ' ../ li br ar ie s / r e g _ s t r u c t s . h '
/* *
* \ func s e r i a l _ i n i t
* \ brief i n i t i a l i z e USART
- Settings : 8 bit char , asynch , no parity , 1 stop bit
*/
void s e r i a l _ i n i t () { |
||||
U C S R 0 B b i t s . _RXEN0 = |
1; |
// enable |
transmit |
|
U C S R 0 B b i t s . _TXEN0 = |
1; |
// enable |
receive |
|
U C S R 0 C b i t s . _UCSZ0 = |
3; |
// 8 |
bit |
char |
U BR R0 bi ts . _w = 25; |
// 19.2 k |
baud |
rate |
|
} |
int main ( void ) {
s e r i a l _ i n i t ();
while (1){
while (! U C S R 0 A b i t s . _RXC0 ) {}
UDR0bits . _w = UDR0bits . _w ;
// transmit what was received
}
通常UDR0寄存器的内容将被保存到内存中,但在这种情况下不需要。 将数据写入UDR0的行为是开始传输的,因此通常会从内存中设置一些值。
7.2串行外设接口(SPI)
串行外设接口(SPI)是四线,全双工通信总线以主从模式运行。 这意味着任何时候总线上的设备之间都会发生通信,它是主设备启动的通信。 奴隶只能对主人作出回应。 两个以上的设备可以连接到同一条数据总线,但只能有一个主设备,每个从设备需要一条独立的从设备选择线。 因此,总线上的实际线路数从3(单从站,单向通信)到3加总线上从站的数量。
7.2.1 SPI总线
下面的图7.1给出了一个设置示例,其中有三个从站通过SPI连接到一个主站。六根导线是:
SCK:系统ClocK。这是传输使用的时钟信号。它由主机生成,不需要是恒定频率。虽然通常由主设备中的硬件时钟产生,但在特殊情况下可以通过软件手动控制线路。也称为SCLK或CLK。
MOSI:主输出从属输入。这是从主机传输到从机的线路,并且是单向的。也称为SIMO,SDO,DO,SO。
MISO:Master In Slave Out。这是从从站到主站的传输线路,也是单向的。也称为SOMI,SDI,DI,SI。
7.2.2操作
在主设备没有与其中一个从设备进行特定通信的时候,所有的引脚都处于休眠状态。取决于CPOL的配置,SCK保持在逻辑高或低,所有nSS线保持在逻辑高电平,MISO和MOSI线可以是任何(通常为三态,见下文)。一旦给定器件的SS拉低,根据时钟相位配置(CPHA),两者中的一个会发生。如果相位设置为0,则主机和从机立即将它们各自的输出线拉到正确的电平,以便发送第一个比特。对于其中之一,这通常是逻辑低的,但不一定是。半个周期后,时钟切换为高电平或低电平或高电平(取决于CPOL),主控和从属采样输入线路。在周期的后沿(半个周期之后,当时钟恢复到原始值时),数据传播并且MISO和MOSI值改变。这一直持续到时钟停止并返回其空闲值。之后,SS引脚可以返回到高值和MISO。
图7.1:使用SPI连接到微控制器的3个器件。
而MOSI回归到不被看好的地步。 因为通信只在主设备驱动时钟的时候发生,所以如果主设备在发送之后需要从设备的响应,则主设备必须继续操作时钟,并且最可能发送零,直到从设备完成发送。 在CPHA设置为1的情况下,数据在前沿时钟边沿传播并在尾部采样,而反之亦然。
图7.2显示了在每个时钟周期的每个数据线的四种状态CPOL和CPHA。 长垂直线表示时钟的前沿。 以下是四种可能配置的简要说明,包括每种配置的常用模式编号
全文共23253字,剩余内容已隐藏,支付完成后下载完整资料
资料编号:[10916],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。