710 likes | 904 Views
通信基础知识. Communications. 通信方式的几个要素 串行、并行( Serial/parallel ) 同步、异步( Synchronous/asynchronous ) 点对点、总线( Point-to-point/bus ) 半双工、全双工( Half-duplex/full-duplex ) 主从式、对等式( Master-slave/equal partners ) 单端信号、差分信号( Single-ended/differential ). 通信基础知识 —— 串行、并行. Communications -characteristics.
E N D
通信基础知识 Communications • 通信方式的几个要素 • 串行、并行(Serial/parallel) • 同步、异步(Synchronous/asynchronous) • 点对点、总线(Point-to-point/bus) • 半双工、全双工(Half-duplex/full-duplex) • 主从式、对等式(Master-slave/equal partners) • 单端信号、差分信号(Single-ended/differential) 微控制器开发技术
通信基础知识——串行、并行 Communications -characteristics • 串行通信 • 数据按位传输 • 通信方只需要很少的连接 – resource/pin efficient • 速度较慢,传输信息少 • 传输距离较远 • 并行通信 • 数据按字节/字传输 • 通信方需要多个连接信号-- difficult for PCB routing • 传输速度快 • 传输距离较短 你接触过哪些串行/并行通信? 微控制器开发技术
通信基础知识——同步、异步 Communications -characteristics • 同步通信 • 接收方可以得到发送方的通信时钟信号 • 传输速率高 • 异步通信 • 发送方和接收方使用独立的时钟来处理通信信号 • 通信双方约定通信速率 • 通信中需要约定起始/停止位或定义特殊的帧结构 • 传输速率较低 微控制器开发技术
通信基础知识——拓扑结构 Communications -characteristics • 点对点 • 通信线路上只有两个通信方 • 不需要寻址 • 总线 • 通信线路上有多个通信方 • 需要建立寻址机制 微控制器开发技术
通信基础知识——半双工、全双工 Communications -characteristics • 半双工 • 不能同时进行发送和接收 • 一方发送时,其他通信方只能处于接收状态 • 需要额外的逻辑来控制发送和接收状态的切换 • 有发生冲突的危险 • 全双工 • 通信端可以同时进行发送和接收 • 需要两个独立的通信通道 • 使用简单,数据传输率高 对讲机?电话机? 微控制器开发技术
通信基础知识——主从式、对等式 Communications -characteristics • 主从式 • 只有主端可以发起数据传输 • 从端等待主端的允许才能传输数据 • 对等式 • 任何节点可以发起数据传输 • 需要建立冲突检测和仲裁机制 微控制器开发技术
通信基础知识——单端、差分信号 Communications -characteristics • 单端信号 • 信号幅度以地电平作为参考 • 通信双方必须建立共同的参考地电平 • 干扰造成的信号幅度变化可能导致错误解释 • 差分信号 • 每个信号使用两根线传输,信号的值由两个线上的电平的差值表示 • 通信方不需要共同的参考地 • 对干扰抑止能力强 • 传输速率高 微控制器开发技术
微控制器常见的通信类型 微控制器开发技术
10.2 同步串行外设接口SPI 单片机原理及应用
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
SPI 特性 • 可设置主机模式 / 从机模式 • 可选择8位或16位数据宽度 • 可选择全双工模式 ( 一个)或单线双向模式 • 可灵活设置的时钟极性和相位 • 可选择从最高位或最低位开始传送 • 可编程的传送速率 • 可实现双缓存操作 • 与LCD驱动器, D/A 转换器, RTC,EEPROM等通信接口简单; 微控制器开发技术
SPI的数据流动 微控制器开发技术
SPI工作原理 IO端 CPU端 MOSI 7 7 MISO 0 0 重复8次 IO端 CPU端 MOSI 7 0 7 0 MISO 微控制器开发技术
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
SPI 方框图 移位寄存器 SPI 时钟发生器 控制寄存器 微控制器开发技术
主机模式 • 控制整个数据传送 • 通过定义SS 选择通信从机 • 确定SCK 波特率,相位和极性 • 切换SCK 脉冲 • 驱动MOSI信号 • 采样MISO信号 • 通过写入SPIDR触发传输过程 微控制器开发技术
从机模式 • 响应传输 • 仅当定义了相应的SS才被激活 • 利用事先定义的相位和极性检测SCK跳变沿 • 驱动MISO信号 • 采样MOSI信号 微控制器开发技术
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
SPI 引脚1 —— 串行数据引脚 MOSI — Master Out/Slave In Pin MISO — Master In/Slave Out Pin 作用:发送和接收串行数据 • SPI置为主机模式:MISO – 数据输入线 • MOSI – 数据输出线 • SPI置为从机模式:MISO – 数据输出线 • MOSI – 数据输入线 . 微控制器开发技术
SPI 引脚2 —— 串行时钟 SCK — Serial Clock Pin 同步信号,对MOSI和MISO引脚传输的串行输入、输出数据进行同步 • 主机模式下,SCK信号来源于内部MCU总线时钟 • 主机和从机在SCK信号的跳变沿进行移位和采样数据 • SCK的时钟频率由SPI0BR选择 • 主机和从机遵守相同时序模式 . 微控制器开发技术
SPI 信号 – SCK极性 & 相位 SCK奇数跳变沿驱动,偶数跳变沿采样 微控制器开发技术
SPI 信号 –SCK极性 & 相位(续) SCK偶数跳变沿驱动,奇数跳变沿采样 微控制器开发技术
SPI 引脚3 —— 外设片选 SS — Slave Select Pin 主机和从机对SS引脚使用不同 • 主机模式:SS信号上拉到高电平 • 从机模式:SS信号为低电平 . 微控制器开发技术
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
SPI 寄存器 1/4 SPICR1 - SPI 控制寄存器 1 1 = SPI IS MASTER 0 = SPI IS SLAVE 1 = SPI LSB FIRST 0 = SPI MSB FIRST 1 = SPI Transmit Interrupt Enable 0 = SPI Transmit Interrupt Disabled DDRS7 SSOE MASTER MODE SLAVE MODE 0 0 SS INPUT SS INPUT (MODF Enabled) 0 1 GP INPUT SS INPUT 1 0 GP OUTPUT SS INPUT 1 1 SS OUTPUT SS INPUT 1 = SPI SYSTEM Enabled 0 = SPI SYSTEM Disabled 1 = SPI Interrupt Enabled 0 = SPI Interrupt Disabled SPICR2 - SPI 控制寄存器 2 SPISWAI = SPI Stop in Wait Mode 1 = HALT SSI CLOCK WHEN CPU IN WAIT MODE MODFEN - Mode Fault Enable 0 = Mode Fault Disabled 1 = Mode Fault Enabled BIDIROE - Output Enable in Bidirectional mode 0 = Output Buffer Disabled 1 = Output Buffer Enabled 微控制器开发技术
SPI 寄存器 2/4 练习: 20M 总线时钟, 最大 SPI 波特率 = ? 最小SPI 波特率 = ? 微控制器开发技术
SPI 寄存器 3/4 SPISR - SPI 状态寄存器 SPRF - SPI 接收中断标志 1 = New is received into SPIDR SPTEF - SPI 发送缓存空中断标志 MODF –主机模式错误标志 1 = SPI Data Register is Empty 1 = SPI Master was selected as Slave 微控制器开发技术
SPI 寄存器 4/4 SPI Data Register(SPIDR = SPIDRH:SPIDRL) - SPI 数据寄存器 注: 用户仅当SPI发送缓冲空标志置位时才能写入该寄存器. 注: 发送数据与接收数据使用相同寄存器 微控制器开发技术
本节提要 一、SPI概述 二、SPI模块功能 三、SPI模块引脚 四、SPI模块寄存器 五、SPI模块编程范例 微控制器开发技术
SPI模块编程范例 • SPI模块编程方法 • SPI初始化:先写SPI0BR,设定SPI波特率;再写控制寄存器SPI0CR1和SPI0CR2,设定时钟的极性、相位、SPI数据传输宽度、SPI工作模式、中断允许位,并使能SPI模块 • SPI收发数据:通过查询SPI0SR中的状态位或采用中断方式,读写数据寄存器,完成数据收发。 微控制器开发技术
SPI模块编程范例(续1) • SPI模块编程范例 1. SPI初始化 //SPI初始化函数 void SPI_Init() { SPI0BR=0x44; //设定波特率 SPI0CR1=0x5C; //关闭SPI中断,置SPI主机模式,使能SPI模块 SPI0CR2=0x00; //数据传输宽度为8位,即一个字节 } 微控制器开发技术
SPI模块编程范例(续2) 2. SPI收发数据 //SPI发送一个字节的函数 //参数:send_data为待发送的1字节数据 void SPI_send_char(unsigned char send_data) { while((SPI0SR&0x20)==0); SPI0DRL=send_data; } //SPI接收一个字节的函数 //返回:接收的1字节数据 unsigned char SPI_rev_char(void) { while((SPI0SR&0x80)==0); return SPI0DRL; } 微控制器开发技术
SPI驱动数码管显示的典型应用 硬件连接: 教材P80: 1.MCU的MOSI(17)接164的A脚(1) 2.MCU的SCK(18)接164的CLK脚(8) 3.164的B(2)和/MR(9)接+5V 4.164的Q0~Q7,接数码管的a~DP 板上12、11、10、9、8、7、6、5、4、 3、 2、1 1 位、a 、 f 、2、3、b、4、g、c、DP、d、e 微控制器开发技术
74LS164原理 微控制器开发技术
SPI驱动数码管显示的典型应用 • 软件: 见3-SPI练习程序 微控制器开发技术
异步串行通信(SCI) • 通信基础知识 • 异步串行通信协议RS-232标准 • SCI功能简介 • SCI寄存器 • SCI软件开发方法 • SCI应用程序示例
RS232 standard EIA RS-232-C 美国电子工业协会正式公布的异步串行通信标准,也是目前最常用的异步串行通信标准, 用来实现计算机与计算机之间、计算机与外设之间的数据通信 RS-232-C电平采用负逻辑,即,逻辑1:-3~-25V,逻辑0:+3~+25V (需要电平转换) RS-232-C接口标准有22根线,采用标准25芯D型插头座;PC上使用简化的9芯D型插座 多种通信应答(握手)方式: 硬件握手,自应答,XON/XOFF模式 波特率: 300bps ~ 4Mbps, 物理层有多种实现方式(铜缆,光缆,红外,无线,微波) 起始位/停止位/数据位/奇偶校验/全双工半双工模式 广泛应用: Modem,20mA电流环,RS485 个人计算机都有标准的RS232接口,驱动程序,超级终端
RS232 standard • 简化的9芯D型接头信号定义(硬件流量控制) • DTE DCE 3 TxD out TxD Transmit Data 2 RxD in RxD Receive Data 5 GND GND 7 RTS out RTS Require To Send 8 CTS in CTS Clear To Send 6 DSR in DSR Data Set Ready 9 DCD in DCD Data Care Detected 4 DTR out DTR Data Terminal Ready
RS232 standard • 简化的9芯D型接头信号定义(自应答方式) • DTE / DCE • 2 TxD out TxD (Transmit Data ) • 3 RxD in RxD (Receive Data) • 7 GND GND (Ground) • 4 RTS out RTS (Require to Send) • 5 CTS in CTS (Clear to Send) • 6 DSR in DSR (Data Terminal Ready) • 8 DCD in DCD (Data Carry Detected) • 20 DTR out DTR (Data Set Ready) Ready always, or XON/XOFF protocol, ASCII only!
RS232 standard • 简化的9芯D型接头信号定义(无应答方式) • 1 protection ground • 2 RxD in RxD (Receive Data) • 3 TxD out TxD (Transmit Data ) • 5 GND GND (Ground) • 6 DSR in DSR (Data Terminal Ready) • 7 RTS out RTS (Require to Send) • 8 CTS in CTS (Clear to Send) • 9 DCD in DCD (Data Carrier Detected) • 4 DTR out DTR (Data Set Ready) No Handshake, should use XON/XOFF protocol,ASCII only
RS232 standard • TTL level vs. RS232 level
RS232 standard • TTL level vs. RS232 level
RS232 standard • RS232标准(1962)出现的比TTL(1964)还早 • 需要接口转换芯片 MAX232 RS232 Microcontroller TTL/CMOS DB9
UART • NRZ (not return zero) encoding • Several configurable parameters • Baud rate, #data bits, parity, #stop bits • Nomenclature: 9600,N81 • LSB- Least significant bit • MSB- Most significant bit Frame format 0 1 2 3 4 5 6 7 8 idle start LSB MSB Parity stop (stop) idle
Start/stop 位 • 接受端需要明确数据帧的边界,即该帧从什么时候开始,什么时候结束。 • 数据位传送之前,都要发送START 位(always ‘0’) (从空闲状态开始的下降沿,是START位的开始) • 在数据位传送结束后,还要传送STOP位 (always ‘1’).
数据位识别 • 接受端在其时钟上升沿采样数据线电平,以识别数据位的高低状态。 • What is the data transmitted above?
数据位识别 TxD RxD Rx_clk Tx_clk 传输过程会引起信号的延迟,会引入外部干扰导致的噪声及毛刺