DSP开发入门

视频:

创龙TI 最新DSP CPU核心架构 C66x 以及 KeyStone I 架构 DSP TMS320C6655/57以及TMS320C6678视频教程全集_哔哩哔哩_bilibili

2024年硬汉科技手把手教您学DSP28335视频教程持续更新中_哔哩哔哩_bilibili

DSP芯片介绍

DSP选型

TI的DSP 分为三大系列:

TMS320C2000系列   :主要应用于 自动控制、电气工程、仪器仪表 如电机控制 数字电源

TMS320C5000系列 : 高性价比 低功耗 主要应用于 通讯领域 如交换机 路由器

TMS320C6000系列  :  高档数字信号处理  和 图像处理 语音处理

TMS320F28335PGFA  读懂芯片型号

TMS---合格产品

320---TI DSP系列

F --- Flash EEROM   (开发阶段和小批量生产就能用F型号的)

28335 --- 产品型号  150MHZ 主频

PGF---芯片封装  176引脚

A  -- 温度范围 -40~85℃

 28335是一款高性能的CPU  具有单精度浮点运算单元  (可以直接硬件支持浮点运算) 16*16和32*32乘法累加操作 (他是有硬件乘法器的 意味着 对 乘除 运算 处理非常快 所以更适合做实时性的 控制 对时间非常敏感的 控制 )

应用场景 

开发板 上电 下电顺序 

上电

 仿真器和开发板先连接好  -----  给开发板供电(这是插电源) ------ 按下电源开关(这是拨动开发板上的开关)  -----仿真器插电脑USB上 

下电

拔掉电脑USB 仿真器 ----- 关掉开发板电源开关 ---- 断开仿真器和开发板的连接 

DSP/MCU/ARM/FPGA对比差别

如何选型DSP

TI DSP 产品线 

TI官网:

Analog | Embedded processing | Semiconductor company | TI.com

定点: 在数据中,小数点的位置是固定的(数据要么 就存整数  要么存小数 在数据运算中不太方便  例如 3/2 可能就会把小数部分丢失 影响精度   但能通过方法来减小误差)

定点DSP存储数据的格式是使用固定点数表示。固定点数表示是一种用整数来表示小数部分的方法。在定点DSP中,数据被表示为带有固定小数点位置的整数,通常使用二进制表示。

例如,如果一个定点数采用16位表示,其中8位用于整数部分,8位用于小数部分,那么这个定点数可以表示0.0到255.996。整数部分和小数部分之间的小数点位置是固定的,因此称为“定点数”。 

浮点DSP存储数据的格式是使用浮点数表示。浮点数是一种可以表示带有小数和指数部分的数值的数据格式。在浮点DSP中,数据通常使用IEEE 754标准定义的32位单精度浮点数或64位双精度浮点数表示。

单精度浮点数由32位组成,其中包括符号位、指数位和尾数位,可以表示大约7位的有效数字。双精度浮点数由64位组成,具有更高的精度,可以表示更多的有效数字和范围。

浮点DSP利用这种格式存储数据,能够提供更高的计算精度和动态范围,适用于需要高精度计算的应用,如声音处理、图像处理、科学计算等领域。

TI DSP 指令架构

定点系列: C64 C64+ 架构

浮点: C67 C67+ 架构

C674 系列 对 定点和浮点 都完全兼容

C66 系列 是在C674系列的基础上开发的  完全兼容 C674

DSP命名

VLIW:

对于单核CPU来说 同一时间 CUP 只能执行 一条指令 如果想实现多任务分时操作 则需对CPU进行分时复用 现在为了解决这个问题 多核CPU 的出现 使程序可以实现一定的并行化处理。

而对于 单核DSP来说 超长指令集 的作用 就是 实现一定的 并行处理 

一条超长指令集 包含 几条 子指令  这条超长指令 除了可以执行当前操作还可以 对下一条指令的执行做初始化操作 相当于 实现了 并行化的执行结构 从而 提高了 DSP的性能

MIPS 和 MFLOPS

 

创建仿真器配置文件

为什么DSP需要实时仿真

DSP跟常见的处理器 如:MCU ARM 不同 DSP所要处理的对象 主要是 大量的实时数据流 那 我们如何知道 这些实时数据 在当前是什么状态 就需要仿真器 来读取这些数据状态 

便于 对数据的分析 并且 对数据处理的 结果 做预测  还能对 DSP的各个外设 各个寄存器的 状态进行查看 修改

在仿真之前 都需要把程序加载到内存运行  这阶段工作就靠仿真器来完成

仿真 分为: 实时仿真  非实时仿真 

比较高端的:XDS510 560 系列 就有实时仿真 功能  可以不占用 板子 任何资源的情况 实时将板子的数据传回PC  就能实时看到当前数据 

对于 XDS100  XDS200 是通过软件 来传递数据 相对来说 速度较慢且效率低

如何创建仿真器配置文件

第一步:硬件链接

将 仿真器接口 接到 板子 的 插座上  将USB转串口的 USB端 链接到电脑 另一端链接到板子上串口外设

 注意启动开关的顺序 启动方式

第二步:对开发板上电

第三步:创建仿真器配置文件

在 新建工程时  有选择仿真器的选项  选好 就能 将仿真器配置文件加载到 工程中

新建后  会在工程左边有个 .ccxml文件  这就是 仿真器配置文件

公共 仿真器配置文件搭建

如果 有很多工程 用内部的 仿真器配置文件 如果仿真器升级了 则 要重新一个个 重新匹配  所以推荐公共配置文件  这样每个工程 都可以 使用这个配置文件  用新的仿真器时 直接 重新建一个公共文件即可

首先 注意到右边的窗口  有一个 仿真器配置工具栏 ,其中有两列  一个 projects(当前工程里所带的仿真器) 一个 User Defined(自己定义的仿真器 公共配置)

如果没有则点开

如何创建 仿真器 公共文件 (路径不能有中文)

有一个 选择框  可以 制定 公共配置文件 存在哪个 文件夹中

修改配置文件

Connection(选择 仿真器型号)

接下来  选择对应芯片

 选择好后点击测试 看是否接通(点击之前 记得让硬件开发板 仿真器 和电脑均连接好)

点击后就开始 测试是否链接正常

如果需要每一个工程 都以这个仿真器 配置 文件  作为默认配置文件 在当前文件 右键 

如何软件仿真(CCS5.5以上 不支持 软件仿真 )

CCS 5.5以上版本(以7.4版本为例)添加软件仿真功能,并打印Hello World进行验证_ccs12怎么打印出helloword-CSDN博客

在配置文件中  选择 德州仪器 Simulator

因为  是软件仿真  所以 直接点save 就好

 

StarterWare库  C6748和兼容

StarterWare是什么:

StarterWare 主要功能  帮助 开发者  编写  基于 非操作系统的应用程序 

这个库提供了 一些 设备抽象层 函数库  这些库 中把 最基本的 寄存器操作 封装成了API函数 

跟 STM的标准库一样

下载库 因为 库和 CCS 是独立存在的


如何使用 库

 如何利用 库 来驱动LED

在当前的工程 按右键 打开属性

为什么 输出镜像格式 是eabi(ELF)格式

因为 TI提供的 SW库中 默认库编译的文件格式 就是ELF格式

如果选择COFF格式 就不能成功的引用库文件 

想要库文件函数 被正确的识别 需要在编译器 Include Options下 将相应的头文件引入工程 

除了需要将函数 相关声明的头文件 搜索路径 加载到工程当中 还需要将 库文件本身加入到工程 

烧写程序 (将程序固化到开发板上)

1.通过仿真器烧写

开始烧写操作之前 先将 CCS编译出来的.out文件转换成 DSP6748可以识别的AIS格式启动镜像

打开AISgen工具  加载6748的配置文件

2.通过串口烧写

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

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

相关文章

AI绘画Stable Diffusion【隐藏文字】:将艺术字隐藏在国风云雾山水图中

大家好,我是灵魂画师向阳 今天我们分享一下用AI绘画工具Stable Diffusion制作网上很火的隐藏文字。这里以将艺术字隐藏在国风云雾山水图为例进行讲解,下面我们就来看看吧。 一. 艺术字隐藏在国风云雾山水图中制作方法 【第一步】:制作底图…

预约直播丨ETLCloud训练营:ETL中多流数据合并与运算专题

在大数据处理领域,一个至关重要的步骤是对多源数据流进行汇聚与融合,进而开展深度处理与剖析。此操作对于构建高效数据仓库、实现数据动态变化的实时洞察,以及驾驭复杂事件流的处理机制尤为关键。过程涉及从多样化的数据源中抽取信息&#xf…

在PostGIS中检查孤线(Find isolated lines in PostGIS)

场景 在PostGIS中有一张线要素表,需要检查该表中的孤线,并且进行自动纠正的计算。 其中孤线定义为两端端点都不在任何其他线的顶点上。 本文介绍在PostGIS中的线要素点,通过函数计算指定线要素表中的孤线,并计算最接近的纠偏位置。 In PostGIS, there is a table of line …

【C++】开源:RabbitMQ安装与配置使用(SimpleAmqpClient)

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&#x1…

【UnityShader入门精要学习笔记】第十六章 Unity中的渲染优化技术 (上)

本系列为作者学习UnityShader入门精要而作的笔记,内容将包括: 书本中句子照抄 个人批注项目源码一堆新手会犯的错误潜在的太监断更,有始无终 我的GitHub仓库 总之适用于同样开始学习Shader的同学们进行有取舍的参考。 文章目录 移动平台上…

C语言(字符和字符串函数)2

Hi~!这里是奋斗的小羊,很荣幸各位能阅读我的文章,诚请评论指点,欢迎欢迎~~ 💥个人主页:小羊在奋斗 💥所属专栏:C语言 本系列文章为个人学习笔记,在这里撰写成文一…

漫谈企业信息化安全 - 零信任架构

一、引言 《万物简史》的作者比尔布来森说,当他小的时候学科学的时候,好像这些科学家们都是有一种本领,把科学总是以一种让人看不懂的方式说得神乎其神,好像有藏着什么不可告人的秘密。因此,想要写一本让大家都能看得…

Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作

系列文章目录 Django入门全攻略:从零搭建你的第一个Web项目Django ORM入门指南:从概念到实践,掌握模型创建、迁移与视图操作[Django ORM实战:模型字段与元选项配置,以及链式过滤与QF查询详解]还在写0.0… 文章目录 系…

开发语言Java+前端框架Vue+后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势?

开发语言Java前端框架Vue后端框架SpringBoot开发的ADR药物不良反应监测系统源码 系统有哪些优势? ADR药物不良反应监测系统具有多个显著的优势,这些优势主要体现在以下几个方面: 一、提高监测效率与准确性: 通过自动化的数据收集…

CAPL如何发送一条UDP报文

UDP作为传输层协议,本身并不具有可靠性传输特点,所以不需要建立连接通道,可以直接发送数据。当然,前提是需要知道对方的通信端点,也就是IP地址和端口号。 端口号是传输层协议中最显著的特征,传输层根据它来确定上层绑定的应用程序,以达到把数据交给上层应用处理的目的。…

使用PNP管控制MCU是否需要复位

这两台用到一款芯片带电池,希望电池还有电芯片在工作的时候插入电源不要给芯片复位,当电池没电,芯片不在工作的时候,插入电源给芯片复位所以使用一个PNP三极管,通过芯片IO控制是否打开复位,当芯片正常工作的…

LabVIEW与Simulink的通信及调用方式

LabVIEW和Simulink可以通过多种方式进行通信和集成,实现数据交互和功能调用。常见的通信方式包括TCP/IP、UDP、共享内存等,此外还可以利用MATLAB Script Node和S-Function等直接调用对方的功能。这些方法使得LabVIEW和Simulink能够协同工作,充…

element-plus中在表格校验输入的值

element-plus中在表格校验输入的值 效果&#xff1a; 注意事项&#xff1a;需要在表单套一个表格的字段 代码&#xff1a; <el-form :model"tableFrom" ref"tableDataRef" :rules"rules" style"margin: 0px !important;">&…

c语言基础:数组的运用以及在内存中的地址的理解

目录 目录&#xff1a; 1.数组作为函数参数 2.数组在内存中的存储 2.1数组名是什么&#xff1f; 2.2下面我们来探讨二维数组的各个名字表示什么 二维数组的首元素地址是什么呢&#xff1f; *arr表示的是什么呢 &#xff1f;&#xff08;arr是二维数组&#xff09; 1.数组作…

【NumPy】掌握NumPy的divide函数:执行高效的数组除法操作

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

【Python】解决Python错误报错:IndexError: tuple index out of range

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

视频拼接融合产品的产品与架构设计(四)分布式GPU运算合并单元

上一篇如下 视频拼接融合产品的产品与架构设计(三&#xff09;内存和显存单元数据迁移 视频合并单元说明 对下面这张图做些说明&#xff0c;视频接入是比较常见&#xff0c;可以说是普通&#xff0c;但是做到接入后随即进行比较重的算法运算&#xff0c;这个在视频领域并不多…

npm run dev 同时运行vue前端项目和node后端项目

将两个项目放到一个目录下 项目拖进vscode中&#xff0c;安装包依赖&#xff0c;修改配置 npm i concurrently "dev": "concurrently \"vite --mode development\" \"nodemon app.js\"" 命令行 npm run dev 运行 没有运行成功排查 …

基于Linux的文件操作(socket操作)

基于Linux的文件操作&#xff08;socket操作&#xff09; 1. 文件描述符基本概念文件描述符的定义&#xff1a;标准文件描述符&#xff1a;文件描述符的分配&#xff1a; 2. 文件描述符操作打开文件读取文件中的数据 在linux中&#xff0c;socket也被认为是文件的一种&#xff…

Maven简介和快速入门

1.1Maven介绍 Maven – Introduction (apache.org) Maven就是一个软件&#xff0c;掌握软件安装、配置、以及基本功能&#xff08;项目构建、依赖管理&#xff09;。 1.2Maven主要作用 1.依赖管理&#xff1a; Maven 可以管理项目的依赖&#xff0c;包括自动下载所需依赖库、…