【电路笔记 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; // 启用看门狗,分频因子 512
    EDIS;   // 禁止写入受保护寄存器
}
喂狗(刷新看门狗计数器)
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)。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CCE-基础

背景: 虚拟化产生解决物理机资源浪费问题,云计算出现实现虚拟化资源调度和管理,容器出现继续压榨虚拟化技术产生的资源浪费,用命名空间隔离(namespace) 灰度升级(升级中不影响业务&#xff09…

基于LLama_factory的Qwen2.5大模型的微调笔记

Qwen2.5大模型微调记录 LLama-facrotyQwen2.5 模型下载。huggingface 下载方式Modelscope 下载方式 数据集准备模型微调模型训练模型验证及推理模型导出 部署推理vllm 推理Sglang 推理 LLama-facroty 根据git上步骤安装即可,要求的软硬件都装上。 llama-factory运行…

提取图片高频信息

提取图片高频信息 示例-输入: 示例-输出: 代码实现: import cv2 import numpy as npdef edge_calc(image):src cv2.GaussianBlur(image, (3, 3), 0)ddepth cv2.CV_16Sgray cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)grad_x cv2.Scharr(g…

移动充储机器人“小奥”的多场景应用(上)

一、高速公路服务区应用 在高速公路服务区,新能源汽车的充电需求得到“小奥”机器人的及时响应。该机器人配备有储能电池和自动驾驶技术,能够迅速定位至指定充电点,为待充电的新能源汽车提供服务。得益于“小奥”的机动性,其服务…

怎么只提取视频中的声音?从视频中提取纯音频技巧

在数字媒体的广泛应用中,提取视频中的声音已成为一项常见且重要的操作。无论是为了学习、娱乐、创作还是法律用途,提取声音都能为我们带来诸多便利。怎么只提取视频中的声音?本文将详细介绍提取声音的原因、工具、方法以及注意事项。 一、为什…

Windows环境GeoServer打包Docker极速入门

目录 1.前言2.安装Docker3.准备Dockerfile4.拉取linux环境5.打包镜像6.数据挂载6.测试数据挂载7.总结 1.前言 在 Windows 环境下将 GeoServer 打包为 Docker,可以实现跨平台一致性、简化环境配置、快速部署与恢复,同时便于扩展集成和版本管理&#xff0c…

《Vue零基础入门教程》第四课: 应用实例

往期内容 《Vue零基础入门教程》第一课:Vue简介 《Vue零基础入门教程》第二课:搭建开发环境 《Vue零基础入门教程》第三课:起步案例 参考官方文档 https://cn.vuejs.org/api/application#create-app 示例 const {createApp} Vue// 通…

NUXT3学习日记四(路由中间件、导航守卫)

前言 在 Nuxt 3 中,中间件(Middleware)是用于在页面渲染之前或导航发生之前执行的函数。它们允许你在路由切换时执行逻辑,像是身份验证、重定向、权限控制、数据预加载等任务。中间件可以被全局使用,也可以只在特定页…

使用docker快速部署Nginx、Redis、MySQL、Tomcat以及制作镜像

文章目录 应用快速部署NginxRedisMySQLTomcat 制作镜像镜像原理基于已有容器创建使用 Dockerfile 创建镜像指令说明构建应用创建 Dockerfile 文件创建镜像 应用快速部署 Nginx docker run -d -p 80:80 nginx使用浏览器访问虚拟机地址 Redis docker pull redis docker run --…

02微服务系统与设计(D1_走出微服务误区:避免从单体到分布式单体)

目录 学习前言 一、回顾:从单体到微服务到 Function 二、分布式单体 分布式单体起因之一:通过共享库和网络客户端访问分布式能力 分布式单体起因之二:简单用远程调用替代进程内方法调用 分布式单体起因小结 三、引入非侵入式方案&#…

WEB攻防-通用漏洞文件上传js验证mimeuser.ini语言特性

知识点: 1、文件上传-前端验证 2、文件上传-黑白名单 3、文件上传-user.ini妙用 4、文件上传-php语言特性 详细点: 1、检测层面:前端,后端等 2、检测内容:文件头,完整型,二次渲染等 3、检…

鸿蒙学习高效开发与测试-集成开发环境(4)

文章目录 1、工程管理2、代码编辑3、界面预览4、编译构建5、代码调试6、性能调优7、设备模拟8、命令行工具9、端云一体化开发 HUAWEI DevEco Studio 是面向鸿蒙生态的集成开发环境,提供了一站式的鸿蒙生态应用、元服务开发能力,详细能力如图所示。 1、工…

基于yolov8、yolov5的茶叶等级检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:茶叶等级检测在茶叶生产、质量控制和市场销售中起着至关重要的作用,不仅能帮助相关部门实时监测茶叶质量,还为智能化检测系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的茶叶等级检测模型,该模…

Spire.PDF for .NET【页面设置】演示:打开 PDF 时自动显示书签或缩略图

用户打开 PDF 文档时,他们会看到 PDF 的初始视图。默认情况下,打开 PDF 时不会显示书签面板或缩略图面板。在本文中,我们将演示如何设置文档属性,以便每次启动文件时都会打开书签面板或缩略图面板。 Spire.PDF for .NET 是一款独…

从 HTML 到 CSS:开启网页样式之旅(开篇之一)——CSS 初体验与网页样式新征程

从 HTML 到 CSS:开启网页样式之旅(一)——CSS 初体验与网页样式新征程 前言一、为什么需要 CSS?二、CSS的引用(一)行内样式(二)内部样式(三)外部样式&#xf…

Android音频采集

在 Android 开发领域,音频采集是一项非常重要且有趣的功能。它为各种应用程序,如语音聊天、音频录制、多媒体内容创作等提供了基础支持。今天我们就来深入探讨一下 Android 音频采集的两大类型:Mic 音频采集和系统音频采集。 1. Mic音频采集…

数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…

数据结构之一:复杂度

相关代码:SData/test_22/main.c Hera_Yc/bit_C_学习 - 码云 - 开源中国 数据结构:在内存当中存储、组织数据的方式。(顺序表、链表、栈、队列、树等)。 算法:与数据结构配合使用,是对数据的处理。&#…

【鸿蒙技术分享:探索 HarmonyOS 开发之旅】

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Houdini和Blender如何使用CPU云渲染

近期,渲染101云渲染农场在产品和服务方面进行了重要更新,进一步提升了我们平台的渲染能力和兼容性,助力各位用户高效完成创作。云渲码6666 渲染101云渲码6666 1. Houdini和Blender支持CPU云渲染 我们不断拓展云渲染的工具和平台支持&#x…