【电路笔记 TMS320F28335DSP】时钟+看门狗+相关寄存器(功能模块使能、时钟频率配置、看门狗配置)

时钟源和主时钟(SYSCLKOUT)

  • 外部晶振:通常使用外部晶振(如 20 MHz)作为主要时钟源。
  • 内部振荡器:还可以选择内部振荡器(INTOSC1 和 INTOSC2),适合无需高精度外部时钟的应用。
  • PLL(锁相环)
    • 提供倍频功能,将外部晶振频率倍增以生成更高的系统时钟频率。
    • TMS320F28335 的最大系统频率为 150 MHz
    • 配置时需要通过 PLLCR 寄存器设置倍频因子,同时需要注意锁定时间。

在这里插入图片描述

请添加图片描述

内部时钟

请添加图片描述
请添加图片描述

锁相环

  • 锁相环或锁相环 (PLL) 是一种控制系统,可生成输出信号,其相位相对于输入信号的相位是固定的。保持 input 和 output 相位为 lockstep 也意味着保持 input 和 output 频率相同,因此锁相环也可以跟踪 input 频率。通过集成分频器,PLL 可以产生一个稳定的频率,该频率是输入频率的倍数。
    • 这些 properties 用于 clock synchronization, demodulation, frequency synthesis, clock multipliers,以及从嘈杂的通信通道恢复信号。自 1969 年以来,单个集成电路可以提供完整的 PLL 构建块,如今的输出频率从几十赫兹到几千兆赫兹不等。因此,PLL 广泛用于无线电、电信、计算机(例如在微处理器中分配精确定时的时钟信号)、并网逆变器(用于将直流可再生资源和存储元件(如光伏和电池)与电网集成的电子电源转换器)和其他电子应用。

    • 相关器件:锁频环 (FLL) 是一种电子控制系统,可生成锁定到输入或 “参考” 信号频率的信号。[1]该电路将受控振荡器的频率与参考频率进行比较,自动升高或降低振荡器的频率,直到其频率(但不一定是相位)与参考频率匹配。

请添加图片描述

外设时钟

  • 外设时钟由 SYSCLKOUT 分频后提供,通过寄存器(HISPCP、LOSPCP)控制。这允许为不同的外设设置合适的时钟频率,从而优化性能和功耗。

请添加图片描述
请添加图片描述
请添加图片描述

看门狗

请添加图片描述

工作原理

  1. 看门狗定时器从预设值开始递减计数。
  2. 如果计数到零且未刷新,触发复位或中断。
  3. 系统通过定期向看门狗写入特定值来“喂狗”(清除计数器),以防止溢出。

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

相关寄存器

请添加图片描述

  • 常见外设及其时钟特性:
外设模块时钟来源时钟配置寄存器特性及应用
ADCSYSCLKOUT 或其分频信号ADCCTL2.ADCNONOVERLAP时钟速率决定采样频率,最大速率 12.5 MSPS
ePWMSYSCLKOUT-驱动电机、PWM 控制信号
eQEP/eCAPSYSCLKOUT 或外部时钟-编码器接口、捕获输入事件
SPISYSCLKOUT 分频SPIBRR最大速率取决于时钟源配置
I2CSYSCLKOUT 分频I2CPSC/I2CCLKL/I2CCLKH时钟决定 I2C 的速率(如 100kHz)
UARTSYSCLKOUT 分频SCIHBAUD/SCILBAUD配置波特率分频器
CANSYSCLKOUT 或外部时钟CANBTC用于工业通信

请添加图片描述
请添加图片描述

时钟管理寄存器

寄存器名称功能描述
PLLSTS控制和监测 PLL 的状态
HISPCP配置高速外设(如 SPI)的时钟分频值。
LOSPCP用于设置低速外设(如 ePWM、eCAP)的时钟分频值。
PLLCR配置 PLL 倍频因子
SYSCTL_REGS提供外设启用/禁用和时钟配置的寄存器
XCLKOUT配置外部时钟输出的频率和信号

外设时钟配置示例

功能模块使能配置

请添加图片描述

设置 HISPCP

请添加图片描述
请添加图片描述

150 / 6 = 25 M 150/6=25 M 150/6=25M

设置 SPI 时钟

SpiaRegs.SPIBRR = 0x63; //波特率=150M/4/100=375K https://blog.csdn.net/qq_17525633/article/details/103145686

SPI 波特率由以下公式计算:

波特率 = SPI 模块时钟频率 (SPI Clock) SPIBRR 值 + 1 \text{波特率} = \frac{\text{SPI 模块时钟频率 (SPI Clock)}}{\text{SPIBRR 值 + 1}} 波特率=SPIBRR  + 1SPI 模块时钟频率 (SPI Clock)

其中:

  • SPI 模块时钟频率 是由系统时钟(SYSCLKOUT)分频得到,公式为:
    SPI 模块时钟频率 = SYSCLKOUT SPI 时钟分频器 \text{SPI 模块时钟频率} = \frac{\text{SYSCLKOUT}}{\text{SPI 时钟分频器}} SPI 模块时钟频率=SPI 时钟分频器SYSCLKOUT

  • 分频器配置:SPI 模块时钟的分频因子由 HISPCP 寄存器配置。在本例中,分频值为 4:
    SPI 模块时钟频率 = 150 MHz 4 = 37.5 MHz \text{SPI 模块时钟频率} = \frac{150\, \text{MHz}}{4} = 37.5\, \text{MHz} SPI 模块时钟频率=4150MHz=37.5MHz

SPIBRR = 37.5 MHz 375 kHz − 1 = 100 − 1 = 99 \text{SPIBRR} = \frac{37.5 \, \text{MHz}}{375 \, \text{kHz}} - 1 = 100 - 1 = 99 SPIBRR=375kHz37.5MHz1=1001=99

99 转换为十六进制:
SPIBRR = 0 x 63 \text{SPIBRR} = 0x63 SPIBRR=0x63

配置 ADC 时钟为 25 MHz:

  • 确保 SYSCLKOUT 设置为 150 MHz。
  • 配置分频因子为 6:
    AdcRegs.ADCCTL2.bit.PRESCALE = 6; // 设置 ADC 时钟分频,https://blog.csdn.net/weixin_40785694/article/details/95944219
    

看门狗示例

看门狗配置
看门狗通过 System Control Register(系统控制寄存器组)进行配置。以下是关键寄存器:

寄存器名称功能描述
WDCR (看门狗控制寄存器)控制看门狗启停、分频和模式设置
WDCNTR看门狗计数器值
WDKEY写入特定密钥以喂狗
  • WDENINT(看门狗中断使能)
    • 1:触发中断,而不是复位。
    • 0:直接复位系统。
  • WDCHK:写保护,看门狗启用后不能随意更改。
  • WDPS:设置看门狗计时器的分频。

时钟来源和计数周期

  • 看门狗计数器的时钟来源为 SYSCLKOUT,通过分频器配置。计数周期计算公式为:

超时时间 = 看门狗时钟周期 × 2 16 分频因子 \text{超时时间} = \frac{\text{看门狗时钟周期} \times 2^{16}}{\text{分频因子}} 超时时间=分频因子看门狗时钟周期×216

例:

  • SYSCLKOUT = 150 MHz

  • 分频因子 = 512(WDPS 设置为 101)

  • 则看门狗超时时间为:
    超时时间 = 1 150 × 1 0 6 × 2 16 × 512 ≈ 2.23 ms \text{超时时间} = \frac{1}{150 \times 10^6} \times 2^{16} \times 512 \approx 2.23 \, \text{ms} 超时时间=150×1061×216×5122.23ms

典型用法

禁用看门狗
  • 通常在调试阶段会禁用看门狗:

请添加图片描述

void DisableWatchdog(void) {EALLOW;SysCtrlRegs.WDCR = 0x68; // 禁用看门狗,0x68 的二进制表示为 0110 1000,按照3到6位的约束设置EDIS;
}

请添加图片描述

初始化看门狗
void InitWatchdog(void) {EALLOW; // 允许写入受保护寄存器SysCtrlRegs.WDCR = 0x28; // 启用看门狗,分频因子 512EDIS;   // 禁止写入受保护寄存器
}
喂狗(刷新看门狗计数器)
void ServiceWatchdog(void) {EALLOW;SysCtrlRegs.WDKEY = 0x55; // 写入第一密钥SysCtrlRegs.WDKEY = 0xAA; // 写入第二密钥完成喂狗EDIS;
}

请添加图片描述

看门狗中断模式

在一些应用中,可以将看门狗设置为触发中断,而不是复位系统。此时:

  • 设置 WDENINT 位。
  • 在中断服务例程中处理溢出逻辑。

示例代码:

interrupt void WatchdogISR(void) {// 用户代码:处理看门狗溢出
}void EnableWatchdogInterrupt(void) {EALLOW;SysCtrlRegs.SCSR = 0x1; // 启用看门狗中断模式PieCtrlRegs.PIEIER1.bit.INTx8 = 1; // 使能 PIE 看门狗中断EDIS;
}

注意事项

  1. PLL 稳定性
    • 在修改 PLL 配置后,必须等待 PLL 锁定,避免系统时钟不稳定。
  2. 时钟抖动
    • 对于 ADC 等高精度模块,输入时钟必须稳定,推荐使用外部晶振。
  3. 功耗管理
    • 未使用的外设可以通过关闭其时钟降低功耗。
  4. 外设时钟限制
    • 部分外设有最大时钟频率要求(如 I2C 最大 12 MHz)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/476485.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 并发编程 (1)java中如何实现并发编程

目录 1. 继承 Thread 类 2. 实现 Runnable 接口 3. 使用 FutureTask 4. 使用 Executor 框架 5. 具体案例 1. 继承 Thread 类 概述:通过继承 Thread 类并重写其 run() 方法来创建一个新的线程。 步骤: 创建一个继承 Thread 类的子类。重…

巧用观测云可用性监测(云拨测)

前言 做为系统运维或者开发,很多时候我们需要能够实时感知我们所运维的系统和服务的情况,比如以下的场景: 系统上线前测试:包括功能完整性检查,确保页面元素(如图像、视频、脚本等)都能够正常…

python oa服务器巡检报告脚本的重构和修改(适应数盾OTP)有空再去改

Two-Step Vertification required: Please enter the mobile app OTPverification code: 01.因为巡检的服务器要双因子认证登录,也就是登录堡垒机时还要输入验证码。这对我的巡检查服务器的工作带来了不便。它的机制是每一次登录,算一次会话…

Unreal从入门到精通之如何绘制用于VR的3DUI交互的手柄射线

文章目录 前言实现方式MenuLaser实现步骤1.Laser和Cursor2.移植函数3.启动逻辑4.检测射线和UI的碰撞5.激活手柄射线6.更新手柄射线位置7.隐藏手柄射线8.添加手柄的Trigger监听完整节点如下:效果图前言 之前我写过一篇文章《Unreal5从入门到精通之如何在VR中使用3DUI》,其中讲…

Win11 22H2/23H2系统11月可选更新KB5046732发布!

系统之家11月22日报道,微软针对Win11 22H2/23H2版本推送了2024年11月最新可选更新补丁KB5046732,更新后,系统版本号升至22621.4541和22631.4541。本次更新后系统托盘能够显示缩短的日期和时间,文件资源管理器窗口很小时搜索框被切…

【数据结构】【线性表】【练习】反转链表

申明 该题源自力扣题库19&#xff0c;文章内容&#xff08;代码&#xff0c;图表等&#xff09;均原创&#xff0c;侵删&#xff01; 题目 给你单链表的头指针head以及两个整数left和right&#xff0c;其中left<right&#xff0c;请你反转从位置left到right的链表节点&…

【赵渝强老师】MySQL的慢查询日志

MySQL的慢查询日志可以把超过参数long_query_time时间的所有SQL语句记录进来&#xff0c;帮助DBA人员优化所有有问题的SQL语句。通过mysqldumpslow工具可以查看慢查询日志。 视频讲解如下&#xff1a; MySQL的慢查询日志 【赵渝强老师】MySQL的慢查询日志 下面通过具体的演示…

基于docker进行任意项目灵活发布

引言 不管是java还是python程序等&#xff0c;使用docker发布的优势有以下几点&#xff1a; 易于维护。直接docker命令进行管理&#xff0c;如docker stop、docker start等&#xff0c;快速方便无需各种进程查询关闭。环境隔离。项目代码任何依赖或设置都可以基本独立&#x…

Android 分区相关介绍

目录 一、MTK平台 1、MTK平台分区表配置 2、MTK平台刷机配置表 3、MTK平台分区表配置不生效 4、Super分区的研究 1&#xff09;Super partition layout 2&#xff09;Block device table 二、高通平台 三、展锐平台 四、相关案例 1、Super分区不够导致编译报错 经验…

数据库类型介绍

1. 关系型数据库&#xff08;Relational Database, RDBMS&#xff09;&#xff1a; • 定义&#xff1a;基于关系模型&#xff08;即表格&#xff09;存储数据&#xff0c;数据之间通过外键等关系相互关联。 • 特点&#xff1a;支持复杂的SQL查询&#xff0c;数据一致性和完整…

当产业经济插上“数字羽翼”,魔珐有言AIGC“3D视频创作大赛”成功举办

随着AI技术的飞速发展&#xff0c;3D数字人技术已成为驱动各行各业转型升级的重要力量。在这一背景下&#xff0c;2024山东3D数字人视频创作大赛应运而生&#xff0c;并在一番激烈的角逐后圆满落幕&#xff0c;为科技与创意的交融写下浓墨重彩的一笔。 11月20日&#xff0c;一…

经济增长初步

1.人均产出 人均产出&#xff0c;通常指的是一个国家、地区或组织在一定时期内&#xff0c;每个劳动人口平均创造的生产总值。它是衡量一个地区或国家经济效率和劳动生产率的重要指标。具体来说&#xff0c;人均产出可以通过以下公式计算&#xff1a; 人均产出总产出/劳动人口…

图像增强夜视仪行业全面而深入的分析

图像增强夜视设备&#xff08;I2ND 或 INVD&#xff09;是一种增强监视、安全和军事应用的微光可见度的技术。 它允许用户在非常弱的光线甚至完全黑暗的条件下看到东西。 一、市场研究 1. 市场规模与增长趋势 据QYResearch调研团队最新报告&#xff0c;预计2029年全球图像增强…

002 MATLAB语言基础

01 变量命名规则 变量名只能由字母、数字和下划线组成&#xff0c;且必须以字母开头&#xff1b; 变量名区分字母的大小写&#xff1b; 变量名不能超过最大长度限制&#xff1b; 关键字不能作为变量名&#xff0c;如for、end和if等&#xff1b; 注意&#xff1a;存变量命名时…

greater<>() 、less<>()及运算符 < 重载在排序和堆中的使用

简略图 greater<>()(a, b) a > b 返回true&#xff0c;反之返回false less<>()(a, b) a < b 返回true&#xff0c;反之返回false 在cmp中使用&#xff08;正着理解&#xff09; 规则返回true时a在前&#xff0c;反之b在前 在priority_queue中使用 &#xff…

冲破AI 浪潮冲击下的 迷茫与焦虑

在这个科技日新月异的时代&#xff0c;人工智能如汹涌浪潮般席卷而来&#xff0c;不断改变我们的生活。你是否对 AI 充满好奇&#xff0c;却不知它将如何改变你的工作与生活&#xff1f;又是否会在 AI 浪潮的冲击下陷入迷茫与焦虑&#xff1f;《AI 时代&#xff1a;弯道超车新思…

嵌入式LVGL自定义纯数字键盘

嵌入式LVGL自定义纯数字键盘 一、前言二、设置自定义数字键盘三、使用一、前言 嵌入式UI项目中有时候会使用到纯数字密码的需求,所以打算使用LVGL构建自定义的纯数字键盘。 二、设置自定义数字键盘 参考这个文章,以LV_KEYBOARD_MODE_USER_1为例,增加一个数字键盘,如下图所…

第6篇 寻找最大数___ARM C语言程序<二>

Q&#xff1a;如何创建基于ARM处理器的C语言程序寻找一组数据列表中的最大数呢&#xff1f; A&#xff1a;和基于Nios II处理器的C语言程序一样&#xff0c;在ARM处理器C语言中也使用printf库函数显示程序的运行结果&#xff0c;若要调用printf函数&#xff0c;必须在C程序中包…

【11.22更新】Win11 24H2正式版:26100.2454镜像一键获取!

今日&#xff0c;系统之家小编就给大家带来2024年11月最新推出的Windows11 24H2正式版系统&#xff0c;该版本系统包含最新可选更新补丁KB5046740&#xff0c;用户安装后版本号升至26100.2454。更新此系统后&#xff0c;用户就能通过文件资源管理器和桌面上的右键菜单将内容分享…

python小课堂(一)

基础语法 1 常量和表达式2 变量和类型2.1 变量是什么2.2 变量语法 3 变量的类型3.1 动态类型特性 4 注释4.1注释是什么 5 输入输出5.1 print的介绍5.2 input 6 运算符6.1 算术运算符在这里插入图片描述6.2 关系运算符6.3 逻辑运算符6.4赋值运算符 1 常量和表达式 在print()中可…