2020年44 一个小程序编写_UART例子参考模板

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Sunplus SPCE061A 微控制器
单一功能模块UART程序编写举例说明
讲解目的
➢ 串行通信应用广泛,举例说明SPCE061A 与PC机实现串行收发数据
➢ 结合例子巩固对SPCE061A单一模块编程 思路。
数据通讯
在自动化测量和控制系统中,各台仪表之 间需要不断进行各种信息的交换和传输, 这种信息的交换和传输是通过仪表的通 讯接口,按照一定的协议进行的。
任务的提出
前面介绍了关于串口通讯的基本知识, 现在就通过实例介绍应用SPCE061A实现 与PC机数据的接收与发送,同时巩固如何 对单一模块程序设计。
分析SPCE061A可以使用的硬件资源
SPCE061A的UART模块提供了 一个全双工标准接口,用于完成
SPCE061A与外设之间的串行通 UART模块
r1 = 0x0000; r4 = 0x00C0; [P_UART_Command1] = r1; [P_UART_Command2] = r4;
模版与实例程序对比
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:

L_ReSendData: L_Check_TxRDY:
r2 = [P_UART_Command2]; r2 &= 0x0040; jz L_Check_RxRDY; r1 = [G_RecFlag] cmp r1,0x0000 jz L_Check_RxRDY; [P_UART_Data] = r4; r1 = 0x0000 [G_RecFlag] = r1;
通讯接口的主要类型
通讯接口主要有五种类型: ➢ 异步串行通信接口 ➢ 并行通讯接口 ➢ USB接口 ➢ 现场总线接口 ➢ 以太网接口
串行通讯接口
串行通信与并行通信相比节省成本,尤其 远距离传输时,优势更加明显。现在串 行通讯应用越来越广泛。
串行数据接口标准: RS-232、RS-422、RS485
RS-232标准
RS-232是异步串行通信中应用最早,也是 目前应用最广泛的串行总线接口之一。
RS-232采用负逻辑电平,在干扰小的情况 下,一般只采用发送数据、接收数据、 地线三根信号线。
传输率(波特率)
所谓传输率就是指每秒传输多少位,传输 率也常叫波特率。国际上规定了一个标 准波特率系列为1200、1800、2400、 4800、9600、19200、38400、 56000、57600、115200bps
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:
… … Jmp loop
r1 = 0x006b; [P_UART_BaudScalarLow] = r1;
r1 = 0x0000; [P_UART_BaudScalarHigh] = r1;
讯。借助于IOB 口的特殊功能可 以完成UART接口的接收发送数据 的过程。
SPCE061A的UART的数据桢格式
启动位
停止位
start D0 D1 D2 D3 D4 D5 D6 D7 parity stop
8位数据位
奇偶校验位
C3
0.1u
VB1 1 6 Fra Baidu bibliotek 7 3 8 4 9 5
SUB-D 9
XRXD1 XTXD1
根据硬件电路分析任务
➢ 硬件电路采用接收数据、发送数据、地 线三根信号线实现通讯,可以采用查询 的方式实现数据的接收与发送。
➢ 数据格式的确定,为简单起见采用一位 启动位、8位数据位、无奇偶校验位、结 束位
➢ 波特率为115200bps
UART模块寄存器的设置
➢ P_UART_Command1寄存器与本次设 计所采用的查询无奇偶校验方法无关, 写入00H即可
… … Jmp loop
.PUBLIC _main; _main: L_UART_INIT:
int off; r1 = 0x0000 [G_RecFlag] = r1; r1 = 0x0000;
[P_INT_Ctrl] = r1; r1 = 0x0480; [P_IOB_Attrib] =r1; r1 = 0x0400; [P_IOB_Dir] = r1; r1 = 0x0000; [P_IOB_Data] = r1;
1、初始状态的设置。 2、主循环中检测状态和进行分析。 3、清看门狗。
共性
初始化 模块的状态查询 模块的状态处理
清看门狗
实例 初始化IO口、波特率
可以发送数据? N Y
是否接受过数据? N Y
发送数据
是否有数据接收? N Y
接收数据
各功能模块汇编程序 基本模板与实例比较
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:
➢ P_UART_Command2 寄存器设置b7、 b6脚为1,允许接收与发送
➢ P_UART_BaudScalarLow(写0x00C0) 与P_UART_BaudScalarHigh(写 0x0000)联合设置波特率,采用 115200bps
复习 单一模块编程共性
共性一:程序结构
每个单一模块的编程,基本的程序结构 是:
[P_Watchdog_Clear] = r1
Jmp loop
.define xxx xxxx .public _main; _main: … 〔xxx〕=Rx … Loop:
… [P_Watchdog_Clear] = r1 Jmp loop
模版与实例程序对比
L_Check_RxRDY: r1 = 0x0001 [P_Watchdog_Clear] = r1 r2 = [P_UART_Command2]; r2 &= 0x0080; JZ L_Check_RxRDY; r4 = [P_UART_Data];
+
硬件电路连接图 V3 C4
+
+
C11 0.1u
0.1u C10
0.1u
+
U1
1 2 3
C1+ V+
VCC GND
16 15 14
4 C1- DOUT1 13
5 6 7
C2+ C2V-
RIN1 ROUT1
DIN1
12 11 10
8 DOUT2 DIN2 9
RIN2 ROUT2
HIN232CP
C5 104
r1 = 0x0001 [G_RecFlag] = r1; jmp L_ReSendData;
相关文档
最新文档