TI DSP TMS320F280025 Note15:串口SCI的使用
TMS320F280025 串口SCI的使用
`
文章目录
- TMS320F280025 串口SCI的使用
- 框图分析
- 串口特点
- 可编程数据格式
- SCI端口中断
- 非FIFO/FIFO模式下SCI中断的操作/配置
- UartDriver.c
- UartDriver.h
串口时钟由PCLKCR7控制使能,默认位系统时钟4分频
串口接收与发送都可以触发中断
串口使用的引脚需要配置GPIO复用
框图分析
串口配置包括数据格式设置、通讯速率设置、FIFI设置、中断设置
对于发送和接受都可以选择是否使用FIFO
对于发送和接收都可以设置是否触发中断和FIFO中断,对于接收可以检测数据是否正确,如数据错误产生对应标志位
其主要功能单元如下:
①一个发送器(TX) 及相关寄存器。
–SICTXBUF: 发送数据缓冲寄存器, 存放所要发送的数据(由 CPU 装载) 。
–TXSHF 寄存器: 发送移位寄存器, 从 SCITXBUF 寄存器接收数据, 并将数据移位到 SCITXD 引脚上, 每次移 1 位数据。
②一个接收器(RX) 及相关寄存器。
–SCIRXBUF: 接收数据缓冲寄存器, 存放 CPU 所要读取的数据, 来自远程处理器的数据装入寄存器 RXSHF, 然后又装入接收数据缓冲寄存器 SCIRXBUF 和接收仿真缓冲寄存器 SCIRXEMU 中。
–RXSHF 寄存器: 接收移位寄存器, 从 SCIRXD 引脚移入数据, 每次移 1 位。
③一个可编程的波特率产生器。
串口特点
SCI模块的功能包括:
SCI模块的功能包括:
•两个外部针(针都可以用作GPIO,如果不是用于SCI):
- SCITXD: SCI transmit-output
–SCIRXD: SCI接收输入
•波特率可编程64 k不同利率
•数据字格式-一个起始位数据字长度可编程从一到八个比特—
—可选的偶数/奇数/不校验位
-一个或两个停止位区分地址和一个额外的数据(地址模式)
•四个错误检测标志:
•两种唤醒多处理器模式:空闲线和地址位
•半双工或全双工操作
•双缓冲接收和发送功能
•发送和接收操作可以通过中断驱动或轮询算法与状态标志来完成
•发送和接收中断的单独启用位(BRKDT除外)
•NRZ(非归零)格式增强功能包括:
•16级发送/接收FIFO
可编程数据格式
SCI数据的接收和发送都采用NRZ (non-return-to-zero)格式。如图26-3所示,NRZ数据格式包括:
•1个起始位
•1 ~ 8个数据位
•一个奇偶校验位(可选)
•一个或两个停止位
•一个用来区分数据和地址的额外位(仅限地址位模式)
数据的基本单位称为字符,长度为1 ~ 8位。数据的每个字符都用一个起始位、一个或两个停止位以及可选的奇偶校验位和地址位进行格式化。带格式化信息的数据字符称为帧,如图26-3所示。
SCI端口中断
SCI接收和发送可以中断控制。SCICTL2寄存器有一个标志位(TXRDY),它表示活动的中断条件,SCIRXST寄存器有两个中断标志位(RXRDY和BRKDT),加上RX ERROR中断标志,它是FE、OE、BRKDT和PE条件的逻辑或。发送器和接收器具有单独的中断启用位。如果不启用,则不会断言中断;但是,条件标志保持活动状态,反映传输和接收状态。
SCI对于接收端和发送端具有独立的外围中断向量。外围中断请求可以是高优先级的,也可以是低优先级的。这是由外设输出到PIE控制器的优先级位表示的。当RX和TX中断请求处于相同的优先级时,接收端总是比发送端具有更高的优先级,从而减少了接收端溢出的可能性。
外围中断的操作在系统控制和中断一章的外围中断一节中描述。
•如果RX/BK INT ENA位(SCICTL2, bit 1)被设置,当发生以下事件之一时,接收方外设中断请求被断言:—SCI接收到一个完整的帧,并将RXSHF寄存器中的数据传输到SCIRXBUF寄存器中。这个动作设置RXRDY标志(SCIRXST,位6)并启动中断。
-发生中断检测条件(SCIRXD在缺少停止位后的9.625位周期内处于低电平)。这个动作设置BRKDT标志位(SCIRXST,第5位)并启动中断。
•如果设置了TX INT ENA位(SCICTL2.0),当SCITXBUF寄存器中的数据被转移到TXSHF寄存器时,发送器外设中断请求被断言,表明CPU可以写SCITXBUF;这个动作设置TXRDY标志位(SCICTL2,位7)并启动中断。
SCI模块中断反应时间-如果在应用程序中发生紧时序,可能会发生偶尔的BRKDT或其他错误,如FE/PE被触发。
中断不会被触发,直到大约7/8的停止位被检测到(大约0.875位时间)。ISR表项前的实际延迟值为:((7BAUD_CLK_PERIOD)/
8+3SYSCLK_PERIOD)。 在RX
ISR完成之前,SCI不会开始读取额外的位/字符,所以在下一个字节的起始位开始之前完成ISR。不管中断原因是什么,这留下了大约1/8比特时间(大约0.125比特时间)来完成整个ISR。
如果ISR在下一个起始位开始之前没有完成(在RX线再次变低之前),SCI模块在错误的位置开始读取起始位,因此可能会错误地读取所有位,直到下一个正确对齐的起始位(当ISR有足够的时间在再次开始位之前处理)。
避免错误的推荐方法(以适应ISR开始所需的0.875位时间):
- 保持RX ISR短。RX ISR必须仅用于将FIFO/缓冲区中的数据移动到内存中,在内存中数据可以在另一个时间要求较低的函数中进行处理。
- 避免在SCI RX ISR中过多地嵌套其他中断。不要允许嵌套延迟SCI RX ISR完井超过大约0.125位的时间窗口。
- 如果需要额外的时间(超过大约0.125比特的时间),在将额外的数据传输到C2000设备的SCI RX引脚之前,可以在其他设备的固件中添加延迟。 其他设备可以通过以下方式增加延迟:
a.向C2000设备发送带有2个停止位的字节,为C2000 RX ISR完成提供大约1.125位的处理时间。
b.在发送一个字节后,在发送到C2000设备的另一个设备的固件中增加手动延迟,为C2000 RX
ISR完成提供(延迟+大约0.125比特时间)处理时间。 c.在每次C2000
RX中断发生后,在发送到C2000设备的另一个设备的固件中增加手动延迟,为C2000 RX
ISR完成提供(延迟+大约0.125比特时间)处理时间。这很难实现,因为需要另一个设备来预测传输的数据何时触发C2000设备上的RX中断。触发RX中断的例子有:到达RX-
fifo水平、发送BRKDT、发生RXERROR等。RXRDY和BRKDT位的中断产生由RX/BK INT ENA位(SCICTL2,位1)控制。RX ERROR位的中断产生由RX ERR
INT ENA位(SCICTL1,位6)控制。
非FIFO/FIFO模式下SCI中断的操作/配置
①复位: 在上电复位时, SCI 工作在标准 SCI 模式, 禁止 FIFO 功能。 FIFO的寄存器 SCIFFTX、 SCIFFRX 和 SCIFFCT 都被禁止。
②标准 SCI: TXINT/RXINT 中断作为 SCI 的中断源。
③FIFO 使能: 通过 SCIFFTX 寄存器的 SCIFFEN 位置 1, 使能 FIFO 模式。 在任何操作状态下 SCIRST 都可以复位 FIFO 模式。
④寄存器有效: 所有 SCI 寄存器和 SCI FIFO 寄存器(SCIFFTX、 SCIFFRX 和SCIFFCT) 有效。
⑤中断: FIFO 模式有两个中断, 一个是发送 FIFO 中断 TXINT, 另一个是接收 FIFO 中断 RXINT。 FIFO 接收、 接收错误和接收 FIFO 溢出共用 RXINT 中断。 标准 SCI 的 TXINT 将被禁止, 该中断将作为 SCI 发送 FIFO 中断使用。
⑥缓冲: 发送和接收缓冲器增补了 2 个 16 级的 FIFO, 发送 FIFO 寄存器是 8位宽, 接收 FIFO 寄存器是 10 位宽。 标准 SCI 的一个字的发送缓冲器作为发送FIFO 和移位寄存器间的发送缓冲器。 只有移位寄存器的最后一位被移出后, 一个字的发送缓冲才发送 FIFO 装载。 使能 FIFO 后, 经过一个可选择的延迟(SCIFFCT) , TXSHF 被直接装载而不再使用 TXBUF。
⑦延迟发送: FIFO 中的数据传送到发送移位寄存器的速率是可编程的, 可以通过 SCIFFCT 寄存器的位 FFTXDLY(7~0)设置发送数据间的延迟。 FFTXTDLY(7~0)确定延迟的 SCI 波特率时钟周期数, 8 位寄存器可以定义从 0 个波特率时钟周期的最小延迟到 256 个波特率时钟周期的最大延迟。 当使用 0 延迟时, SCI 模块的FIFO 数据移出时, 数据间没有延时, 一位紧接一位的从 FIFO 移出, 实现数据的连续发送。 当选择 256 个波特率时钟的延迟时, SCI 模块工作在最大延迟模式, FIFO 移出的每个数据字之间有 256 个波特率时钟的延迟。 在慢速 SCI/UART 的通信时, 可编程延迟可以减少 CPU 对 SCI 通信的开销。
⑧FIFO 状态位: 发送和接收 FIFO 都有状态位 TXFFST 或 RXFFST(位 12~0) ,这些状态位显示当前FIFO内数据的个数。当状态位为0时, 发送FIFO复位TXFIFO和接收复位位 RXFIFO 会被设置为 1, 会将 FIFO 指针复位为 0, FIFO 重新开始运行。
⑨可编程的中断级: 发送和接收 FIFO 都能产生 CPU 中断, 只要发送 FIFO 状态位 TXFFST(位 12-8) 与中断触发优先级 TXFFIL(位 4-0) 相匹配, 就产生一个中断触发, 从而为 SCI 的发送和接收提供一个可编程的中断触发逻辑。
UartDriver.c
/** UartDriver.c** Created on: 2024年8月8日* Author: Paranoid*/#include "main.h"//
// Defines
//
// Define AUTOBAUD to use the autobaud lock feature
//#define AUTOBAUD//
// Globals
//
uint16_t loopCounter = 0;//
// Function Prototypes
//__interrupt void Scia_RX_INT_ISR(void);
__interrupt void Scia_TX_INT_ISR(void);
//
// Main
//
void SciaDriver_Init(
相关文章:
TI DSP TMS320F280025 Note15:串口SCI的使用
TMS320F280025 串口SCI的使用 ` 文章目录 TMS320F280025 串口SCI的使用框图分析串口特点可编程数据格式SCI端口中断非FIFO/FIFO模式下SCI中断的操作/配置UartDriver.cUartDriver.h串口时钟由PCLKCR7控制使能,默认位系统时钟4分频 串口接收与发送都可以触发中断 串口使用的引脚…...
[Bandzip] 文件解压工具的下载及详细安装使用过程(附有下载文件)
文件解压工具,避免解压出错,双击即可解压文件 下载链接在文末 下载压缩包后解压 !!安装路径不要有中文 解压得到文件 双击exe文件 同意并安装 安装完成后,点击关闭, 右键点击需要解压的压缩包࿰…...
微服务MongoDB解析部署使用全流程
目录 1、什么是MongoDB 1、非关系型数据库 2、非关系型数据库分类 3、MongoDB?bson格式什么样? 2、MongoDB的优势 3、MongoDB应用场景 4、术语 5、操作 1、安装MongoDB 1、查询镜像文件【不操作】 2、拉取镜像文件 3、创建数据挂载目录 4、启…...
string为什么存储在堆里
在 Java 中,字符串对象存储在堆内存中而不是栈内存中,这是由于 Java 的内存管理和对象生命周期的特性决定的。以下是详细解释: 1. Java 内存模型 Java 的内存模型主要分为以下几个部分: 堆(Heap)&#x…...
Python和C++及MATLAB距离相关性生物医学样本统计量算法及数据科学
🎯要点 统计观测值之间距离计算代谢组学和脂质组学分析相关距离矩阵计算卡方检验偏差校正快速计算距离协方差算法大规模生物系统分析距离矩阵相关性测试石油勘探统计学关系 Python距离矩阵 在数学、计算机科学,尤其是图论中,距离矩阵是一…...
【C++篇】领略模板编程的进阶之美:参数巧思与编译的智慧
文章目录 C模板进阶编程前言第一章: 非类型模板参数1.1 什么是非类型模板参数?1.1.1 非类型模板参数的定义 1.2 非类型模板参数的注意事项1.3 非类型模板参数的使用场景示例:静态数组的实现 第二章: 模板的特化2.1 什么是模板特化?2.1.1 模板…...
golang学习笔记20-面向对象(二):方法与结构体【重要】
本节内容是面向对象的核心与基础,很重要。 注意:由于导包语句已经在19讲(笔记19:面向对象的引入)展示过了,所以这里就不展示了。 一、方法的定义与细节 方法是与特定类型(通常是结构体&#x…...
广州C++信奥老师解一本通题 1919:【02NOIP普及组】选数
【题目描述】 已知nn个整数x1,x2,……xn 以及一个整数K(K<n)。从n个整数中任选K个整数相加,可分别 得到一系列的和。例如当n4, k3 4个整数分别为3,7,12,19 3, 7,12,19时,可得全部的组合与它们的和为: 371222 371929 7121938 3121934 现在,要求你计算出和为…...
cas5.3统一登录前后端分离改造方案(源码)
cas5.3 为什么选择cas5.3 版本 5.3 版本是最新的支持jdk8 的版本,并且项目架构基于maven ,商业项目中jdk8 仍是主流,在考虑商业收益的情况下,如果客户不要求,不会升级jdk, 基于Maven的项目比gradle 简单,…...
【ComfyUI】控制光照节点——ComfyUI-IC-Light-Native
原始代码(非comfyui):https://github.com/lllyasviel/IC-Light comfyui实现1(600星):https://github.com/kijai/ComfyUI-IC-Light comfyui实现2(500星):https://github.c…...
LVS+keepalived整合负载均衡配置
准备三台服务器;负载均衡服务器192.168.45.136,后端机器1,92.168.45.135,后端机器2,192.168.45.138 在两台后端机器上安装nginx服务,yum install -y nginx,并且启动nginx服务,systemctl start …...
Goland无法使用debug的修复
现象goland在debug的时候,一直卡在打的断点处,释放断点程序就执行结束。 查看其他博客说是当使用老版本的goland,golang版本为高版本时就会出现debug问题,需要手动更换dlv。 接下来以window为例子: 第一步࿱…...
MySQL和Doris开窗函数LAG执行时的区别
目标表的表结构 CREATE TABLE point_value_status_color_tmp ( id bigint NOT NULL, org_id varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, device_id varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL, origin_ti…...
都是小憨憨!
周五晚上约了俩哥们儿吃饭,天南海北地聊着。其中一个哥们儿 L 讲,他在外面如何辛苦跑业务,维系客户,拿单子……但却被合伙人说是合伙人拉了 L 一把,而且可以分分钟灭了 L。所以 L 感觉到很委屈。然后我们俩就劝说趁早决…...
高级java每日一道面试题-2024年9月30日-服务器篇[Redis篇]-Redis持久化有几种方式?
如果有遗漏,评论区告诉我进行补充 面试官: Redis持久化有几种方式? 我回答: Redis 是一个高性能的键值存储系统,常用于缓存、消息队列和实时数据分析等场景。为了保证数据的持久性,Redis 提供了两种主要的持久化方式:RDB(Redi…...
ICML 2024 论文分享┆一个简单且通用的交通预测提示调优框架
论文简介 本推文介绍了2024 ICML的优秀论文之一《FlashST: A Simple and Universal Prompt-Tuning Framework for Traffic Prediction》。论文的核心目标是通过整合空间和时间因素,精准地预测和分析交通流量的动态变化。然而,在交通预测领域,…...
【C++打怪之路Lv4】-- 类和对象(中)
🌈 个人主页:白子寰 🔥 分类专栏:C打怪之路,python从入门到精通,数据结构,C语言,C语言题集👈 希望得到您的订阅和支持~ 💡 坚持创作博文(平均质量分82)&#…...
滚雪球学MySQL[1.1讲]:MySQL简介与环境配置
全文目录: 前言1. MySQL简介与环境配置1.1 MySQL简介什么是MySQLMySQL的历史和版本MySQL的应用场景 1.2 安装与配置安装MySQL(Windows、Linux、macOS)配置文件解析(my.cnf)启动与停止MySQL服务 1.3 MySQL客户端工具MyS…...
Llama微调以及Ollama部署
1 Llama微调 在基础模型的基础上,通过一些特定的数据集,将具有特定功能加在原有的模型上。 1.1 效果对比 特定数据集 未使用微调的基础模型的回答 使用微调后的回答 1.2 基础模型 基础大模型我选择Mistral-7B-v0.3-Chinese-Chat-uncensored&#x…...
中关村环球时尚产业联盟 东晟时尚产业创新中心成立
2024年9月6日,中关村环球时尚产业联盟与东晟时尚创新科技(北京)有限公司于中关村科技园东城园举行了隆重的战略合作签约仪式。 中关村科技园东城园领导发表了致辞,并表示东城区作为首都北京的核心区域,拥有深厚的历史…...
基于SSM的宠物领养管理系统的设计与实现 (含源码+sql+视频导入教程+文档+PPT)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于SSM的宠物领养管理系统2拥有两种角色 管理员:宠物分类管理、领养管理、宠物商品管理、用户管理、寄存管理、丢失信息管理、订单管理等 用户:登录注册、收藏评…...
为什么要配置环境变量?
在 Windows 操作系统中配置环境变量有多个重要的原因,这些原因与软件开发、系统管理和日常使用密切相关。以下是一些主要的原因: 1. 系统路径(PATH) 可执行文件的位置:PATH 环境变量用于指定操作系统在何处查找可执行…...
条件熵公式详细解释、举例说明计算步骤
公式 7-4 是条件熵的表达式: E ( Y ∣ X ) ∑ i 1 m p ( X x i ) E ( Y ∣ X x i ) E(Y|X) \sum_{i1}^m p(X x_i) E(Y | X x_i) E(Y∣X)i1∑mp(Xxi)E(Y∣Xxi) 这个公式表示的是条件熵,它是衡量在已知某一特征 X X X 的情况下,…...
颍川陈氏始祖陈寔逆势崛起的原由(一)不屈的努力
园子说颍川 按陈寔的出身,与当官是风马牛不相及的。 东汉末年的社会,朝中外戚、宦官当道,地方则由世家大族把持,郡县的政治经济资源都由他们掌控分配,平民以及中小地主很难有出头之日,弄不好就被兼并了。…...
golang小项目1-家庭收支记账系统
项目地址:golang小项目 参考资料:尚硅谷golang教程P229 家庭收支记账系统 1. 系统简介 1.1 项目背景 在现代社会中,家庭的财务管理显得尤为重要。随着生活成本的不断上升,家庭需要有效地记录和分析收支情况,以确保…...
Visual Studio Code下载安装及汉化
官网:https://code.visualstudio.com/ 按照指示一步步操作即可: 汉化:...
MySQL—触发器详解
基本介绍 触发器是与表有关的数据库对象,在 INSERT、UPDATE、DELETE 操作之前或之后触发并执行触发器中定义的 SQL 语句。 触发器的这种特性可以协助应用在数据库端确保数据的完整性、日志记录、数据校验等操作。 使用别名 NEW 和 OLD 来引用触发器中发生变化的记…...
钉钉H5微应用Springboot+Vue开发分享
文章目录 说明技术路线注意操作步骤思路图 一、创建钉钉应用二、创建java项目三、创建vue项目(或uniapp项目),npm引入sdk的依赖四、拥有公网域名端口。开发环境可以使用(贝锐花生壳等工具)五、打开钉钉开发者平台&…...
项目:微服务即时通讯系统客户端(基于C++QT)]四,中间界面搭建和逻辑准备
四,中间界面搭建 前言:当项目越来越复杂的时候,或许画草图是非常好的选择 一,初始化中间窗口initMidWindow void mainWidget::initMidWindow() {//使用网格布局进行管理QGridLayout* layout new QGridLayout();//距离上方 20px 的距离&…...
【C语言】指针详解(一)
个人主页 : zxctscl 如有转载请先通知 文章目录 1.内存与地址2.指针变量与地址2.1 取地址操作符&2.2 指针变量2.3 指针类型2.4 解引用操作符2.5 指针变量的大小 3. 指针变量类型的意义3.1 指针的解引用 4. const修饰指针4.1 const修饰变量4.2 const修饰指针变量…...
北京网站制作17页/老鬼seo
[NOIP2016]天天爱跑步 时间限制:2 s 内存限制:512 MB 【题目描述】 小C同学认为跑步非常有趣,于是决定制作一款叫做《天天爱跑步》的游戏。《天天爱跑步》是一个养成类游戏,需要玩家每天按时上线,完成打卡任务。 这个…...
自己做网站公司/营销技巧和话术
...
商贸公司网站建设/成人短期电脑培训班学费
本资源整理了一些在学习过程中阅读过的且感觉不错的论文,涉及聚类,向量召回,对话系统,对话状态管理,机器学习,语言模型数据集,文本相似度/匹配/分类,深度学习,语音系统&a…...
最简单的做网站/2023年8月疫情爆发
一.复习以下C语言(指针、typedef、预处理)(一)指针指针是地址,这句话是错误的。"指针是地址的类型"。具体的一个地址是指针类型的。指针类型 * 整数类型 int字符类型 char数据类型:"访问内存的方式"常量和变量…...
义乌市网站制作/全网优化哪家好
Android编程中,ScrollView嵌套ListView时,会无法正确的计算ListView的大小。解决的办法如下: (非原创,网上搜到的解决方法) public class MainActivity extends Activity { private ListView listView; …...
社保个人网站/体验式营销
(pdf文件下载) http://files.cnblogs.com/Robotke1/VMWare8.0%E5%AE%89%E8%A3%85Ubuntu12.04%E6%95%99%E7%A8%8B.pdf 转载于:https://www.cnblogs.com/Robotke1/archive/2013/05/09/3070183.html...