第七章串行通信接口SCI
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3
3.奇偶校验
奇校验:校验位为0或1,使得1的数目是奇 数 偶校验:校验位为0或1,使得1的数目是偶 数 单工:1根数据线 全双工:2根数据线 半双工:1根数据线
4
4.串行通信的传输方式
RS-232C总线标准
1.采用负逻辑
逻辑“1”:-15V~-3V
逻辑“0”:+3V~+15V
XS128 SCI模块寄存器
串行口初始化与收发编程的基本方法
串行通信通用函数与测试实例
有关串行通信编程的进一步讨论
2
异步串行通信的基础知识
1.异步串行通信的格式(NRZ)
开始位 第0位 第1位 第2位 第3位 第4位 第5位 第6位 第7位 停止位
2.串行通信的波特率 定义:每秒内传送的位数。 单位:b/s或bps 常用:1200bps、4800bps、 9600bps……
wenku.baidu.com
7
7
SCI的主要功能是:
接收时,把外部的单线输入的数据变成一个字节 的并行数据送入MCU内部; 发送时,把需要发送的一个字节的并行数据转换 为单线输出。
8
9
10
根据波特率设置寄存器的公式:BR=fBUS/(16×Bt) 举例:总线频率fBUS=19.6608MHz, 定义波特率Bt=9600(针对SCI0) SCI0BDL=0x80; //须先给低8位赋值 SCI0BDH=0x00; //再给高5位赋值
13
SCISR1 状态寄存器1
SCISR2 状态寄存器2
14
SCIDRH/L 数据寄存器
15
初始化过程
设置SCI波特率寄存器
设置SCI控制寄存器1
设置SCI控制寄存器2
16
查询方式发送接收一个字符
可以发送 数据吗? 否
是
可以接收 数据吗? 否
是
发送数据
接收数据
17
void SCI_Init(void){ SCI0BD = BUS_FREQUENCY/BAUDRATE; SCI0CR1 = 0X00; SCI0CR2 = 0X2C; }
嵌入式系统设计原理与应用
Design and application of embedded system based on MCU
第 7章
串行通信接口SCI
孙文义
wenyisun@126.com 东北大学秦皇岛分校控制工程学院
2014年3月
1
提纲
异步串行通信的基础知识
电平转换电路与SCI通用编程原理
11
缩写:SCICR1 位定义:
数据位 定义
复位
D7 LOOPS
0
D6 SCISWAI
0
D5 RSRC
0
D4 M
0
D3 WAKE
0
D2 ILT
0
D1 PE
0
D0 PT
0
SCICR2 控制寄存器2
12
举例:设置允许SCI、正常码输出、8位数据、无校验 允许发送,允许接收,允许接收中断 SCI0CR1=0x00; SCI0CR2=0x2C;
18
void SCI_Transmit(byte data){ while(!SCI0SR1_TDRE); // 等待发送缓冲区空 SCI0DRL = data; }
19
void SCI_Receive(byte *data){ *data = SCI0DRL; }
20
#pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void SCI_Int(void){ // Receiver data register full interrupt if(SCI0SR1_RDRF){ SCI_IntRx(); } // Transmit data register empty interrupt if(SCI0SR1_TDRE){} // Transmit complete interrupt if(SCI0SR1_TC){} } #pragma CODE_SEG DEFAULT
2.传输距离≤30m,通信速率≤20Kbps 3.接口
9芯、25芯 地线、发送数据线、接收数据线
5
232 电 平
TTL 电 平
T1IN R1IN R1OUT T1OUT
+5V GND +
16 15 14 13 12 11 10 MAX232CPE 1 2 3 4 5 6 7
+ +
9 8
电平转换芯片MAX232
+
+5V +
1µ F×5
TTL 电平 转为 232 电平
V
1
6
SCI的基本编程原理
接收引脚 RxD 发送引脚 TxD 接收移位寄存器 发送移位寄存器
15 SPH
H X 0
SCI 数据寄存器
15 8 7
MCU 的 内 部 总 线 (Internal Bus)
0
7 SCI 控制寄存器
SCI状态寄存器
SCI波特率寄存器
21
3.奇偶校验
奇校验:校验位为0或1,使得1的数目是奇 数 偶校验:校验位为0或1,使得1的数目是偶 数 单工:1根数据线 全双工:2根数据线 半双工:1根数据线
4
4.串行通信的传输方式
RS-232C总线标准
1.采用负逻辑
逻辑“1”:-15V~-3V
逻辑“0”:+3V~+15V
XS128 SCI模块寄存器
串行口初始化与收发编程的基本方法
串行通信通用函数与测试实例
有关串行通信编程的进一步讨论
2
异步串行通信的基础知识
1.异步串行通信的格式(NRZ)
开始位 第0位 第1位 第2位 第3位 第4位 第5位 第6位 第7位 停止位
2.串行通信的波特率 定义:每秒内传送的位数。 单位:b/s或bps 常用:1200bps、4800bps、 9600bps……
wenku.baidu.com
7
7
SCI的主要功能是:
接收时,把外部的单线输入的数据变成一个字节 的并行数据送入MCU内部; 发送时,把需要发送的一个字节的并行数据转换 为单线输出。
8
9
10
根据波特率设置寄存器的公式:BR=fBUS/(16×Bt) 举例:总线频率fBUS=19.6608MHz, 定义波特率Bt=9600(针对SCI0) SCI0BDL=0x80; //须先给低8位赋值 SCI0BDH=0x00; //再给高5位赋值
13
SCISR1 状态寄存器1
SCISR2 状态寄存器2
14
SCIDRH/L 数据寄存器
15
初始化过程
设置SCI波特率寄存器
设置SCI控制寄存器1
设置SCI控制寄存器2
16
查询方式发送接收一个字符
可以发送 数据吗? 否
是
可以接收 数据吗? 否
是
发送数据
接收数据
17
void SCI_Init(void){ SCI0BD = BUS_FREQUENCY/BAUDRATE; SCI0CR1 = 0X00; SCI0CR2 = 0X2C; }
嵌入式系统设计原理与应用
Design and application of embedded system based on MCU
第 7章
串行通信接口SCI
孙文义
wenyisun@126.com 东北大学秦皇岛分校控制工程学院
2014年3月
1
提纲
异步串行通信的基础知识
电平转换电路与SCI通用编程原理
11
缩写:SCICR1 位定义:
数据位 定义
复位
D7 LOOPS
0
D6 SCISWAI
0
D5 RSRC
0
D4 M
0
D3 WAKE
0
D2 ILT
0
D1 PE
0
D0 PT
0
SCICR2 控制寄存器2
12
举例:设置允许SCI、正常码输出、8位数据、无校验 允许发送,允许接收,允许接收中断 SCI0CR1=0x00; SCI0CR2=0x2C;
18
void SCI_Transmit(byte data){ while(!SCI0SR1_TDRE); // 等待发送缓冲区空 SCI0DRL = data; }
19
void SCI_Receive(byte *data){ *data = SCI0DRL; }
20
#pragma CODE_SEG __NEAR_SEG NON_BANKED interrupt void SCI_Int(void){ // Receiver data register full interrupt if(SCI0SR1_RDRF){ SCI_IntRx(); } // Transmit data register empty interrupt if(SCI0SR1_TDRE){} // Transmit complete interrupt if(SCI0SR1_TC){} } #pragma CODE_SEG DEFAULT
2.传输距离≤30m,通信速率≤20Kbps 3.接口
9芯、25芯 地线、发送数据线、接收数据线
5
232 电 平
TTL 电 平
T1IN R1IN R1OUT T1OUT
+5V GND +
16 15 14 13 12 11 10 MAX232CPE 1 2 3 4 5 6 7
+ +
9 8
电平转换芯片MAX232
+
+5V +
1µ F×5
TTL 电平 转为 232 电平
V
1
6
SCI的基本编程原理
接收引脚 RxD 发送引脚 TxD 接收移位寄存器 发送移位寄存器
15 SPH
H X 0
SCI 数据寄存器
15 8 7
MCU 的 内 部 总 线 (Internal Bus)
0
7 SCI 控制寄存器
SCI状态寄存器
SCI波特率寄存器
21