本应用笔记介绍了用于 z8 encore 的中断驱动 uart!xp® 和 z8 encore!mc™ 微控制器。它描述了 uart 寄存器描述、循环缓冲区实现,以及中断驱动的 uart 实现和硬件设置。
z8 encore 中的 uart 外设概述设备 通用异步接收器/发送器 (uart) 是一种能够处理异步数据传输的全双工通信通道。uart 使用具有可选奇偶校验的单个 8 位数据模式。uart 的特性包括:
8 位异步数据传输 可选择的偶数或奇数奇偶校验生成和检查 一或两个停止位的选项 独立的发送和接收中断 单独的发送和接收使能 帧、奇偶校验、溢出和中断检测 16 位波特率发生器 (brg) 具有三种可配置中断方案的可选多处理器(9 位)模式 波特率发生器定时器模式 驱动器启用外部总线收发器的输出 uart 由三个主要功能块组成:发送器、接收器和波特率发生器。uart 的发送器和接收器各自独立运行,但使用相同的波特率和数据格式。图 1 显示了 uart 架构。
图 1 z8 encore 示意图!xp uart 模块
循环缓冲区实现 本节介绍循环缓冲区的实现。此处介绍的例程可用于任何排队或缓冲应用程序。
缓冲区通常用作临时数据存储,通常用于流式传输数据。类似地,循环缓冲区(或环形缓冲区)是具有内存分配方案的临时数据存储,其中缓冲区可以具有固定大小,并且当索引指针返回到起始位置时可以重用每个内存位置。这种缓冲方案被广泛使用,并且有几个现有版本,每个版本都根据应用需求而变化。本节描述一个简单的缓冲机制。
为了初始化循环缓冲区,需要初始化一个内存段或任何预定义长度的数组。这是缓冲数据的存储位置。
《br》#define rbuf_in_buffersize (uint8) 64)《br》uint8 rbuf_inbuff [rbuf_in_buffersize];《br》
为了便于管理循环缓冲区,初始化了两个索引指针和一个数据计数器。
《br》uint8 rbuf_inrdptr; // pointer to the next read location《br》uint8 rbuf_inwrptr; // pointer to the next write location《br》uint8 rbuf_inlength // buffer length《br》
初始化时,缓冲区不包含任何内容,指针位于缓冲区的开头,如图 2 所示。
图 2 初始化缓冲区
当数据被写入缓冲区时,写指针增加,数据计数器也增加。类似地,当从缓冲区读取数据时,读取指针会递增,而数据计数器会递减。参见图 3。
图 3 缓冲区的读/写操作
当读或写指针到达缓冲区的末尾时,它会跳回到开头,造成环绕效应。因此,之前使用读取操作获取的数据将被覆盖。见图 4。
图 4 环绕
中断驱动的 uart 实现 本节介绍通过z8 encore 的uart 外设初始化、发送和接收数据的方法!设备。
本文档中介绍的 uart 软件实现支持基本格式,即 8 个数据位、无奇偶校验和 1 个停止位。程序等待接收一个字符串(以换行符结束),然后回显到输入字符串。
为了便于通过 uart 进行数据输入/输出,上一节中讨论的循环缓冲区用于存储数据。单独的缓冲区用于处理发送和接收数据。可以根据用户需要更改缓冲区大小 rbuf_in_buffersize 和 rbuf_out_buffersize。
硬件设置
图 5 z8 encore 通过 rs-232 端口连接到 pc
图 5 显示了 z8 encore 的硬件设置!开发套件通过超级终端连接到 pc。超级终端设置为 8-n-1,流量控制设置为无。源代码和本文档中的默认波特率设置使用 115 kbps。用户可以根据需要更改设置。
抢食深紫外UVC-LED市场,这两点不容忽视
中国模拟IC设计目前还处于发展初期还在Fabless阶段
iQOO Z5x全新发布:全能长续航普及者 轻松畅玩一整天
IPS(平面控制模式)广视角技术
ESP32-WROOM-32模组的详细介绍
UART寄存器的循环缓冲区实现以及中断驱动的UART实现和硬件设置
L2级自动驾驶系统体验实测 带给你不一样的体验
iOS11正式版今晚1点正式推送:新功能颇多,修复旧设备的Bug,你准备升级吗?
基于iOS技术开发的安防移动客户端
日本家用美容仪哪家强?看谁与宙斯雅萌相媲美!
揭秘世界上首个漂浮农场:机器人挤牛奶
固态氧传感器的四大优点
英特尔发布CPU微代码更新,防止攻击者窃取敏感数据
减肥坚持不下去?试试这款芯片吧
承泰科技是如何突破国外厂商毫米波雷达市场垄断的?
西门子变频器F-015故障解决方法
ARM9微控制器的软硬件平台设计
工业低频RFID应用:半导体RFID读卡器端口说明
DIY一个简单的触摸延时电路
多根单芯电缆的详细说明