CC2650 - 事件和传感协控制器(下)

+荐课 提问/讨论 评论 收藏
  • 本课程为精品课,您可以登录eeworld继续观看:
  • CC2650 - 事件和传感协控制器(下)
  • 登录
我们现在来调试一下 我们刚才的这个 光强度传感器的这样一个应用 我们之前呢已经生成了它的代码 所以说我们现在就直接用他的 task testing 这样一个框架来对它进行调试 我们先连接上这个板子 这上面呢有一排按钮 连接上之后 这个地方就有一把叉 点了之后呢就断开了 这上面有一排按钮的话 他告诉我们这个是运行初始化代码运行一次 这个是在调试窗口 debugging panel 里面去运行的 那我们在 debugging panel 里面去搞 可以看到呢这个就是我们的 在 initialization code 里面这两句看得到 但是这里面也只能按照去单步的 而且每一个汇编指令的单步运行 是没有办法按照我们比较习惯的 那种表达事迹得单步去运行 那么这比如说刚才的 JS2 跳转指令 我们就把它跳进来 跑到哪里就算哪里把它运行完毕 运行完毕之后 这块他告诉我们 可以终结我们的初始化代码的调试 然后返回到我们的测试框架 这个时候呢它上面的就变了 变成运行结束代码 运行一次 这个是在调试窗口里面运行 这个呢是运行我们的可执行代码 一直运行这个是运行一次 这个是可执行代码 我们在调试窗口里面去运行 那么我们在调试窗口 这有个不好呢 就说我们好像没办法在里面打断点 断点是没法打 同时呢我们也没有办法 在这边变量的这个窗口里面 来查看我们自己的比如说 ADC value 这一些临时状态 这种变化我们没有办法看 下面呢是一些二进制的东西 这个东西可能也没有什么人看得懂 这些一些状态 你只有这样跑 还是比较单调的 结束它 然后回来 总体来说 这个调试器是一个最基本的 这样一个基于汇编指令状态的这样一个调试器 我们也没有办法看到 它里面的实际的一些变量值 也没有办法打断点 就是说如果是我们用这个东西 来做实际开发的话 还是比较讨厌的一个事情 希望 TI 后面的话能够把这个情况有所改变 我们现在来看一看 我们的 analog light sensor 这个工程 这个工程产生的一些代码 我们这里可以产生它 那我们可以看到它有一些 framework 有它本身接口的一些粗糙的东西 同时呢我们也看到一些统计数据 包括它的框架的占有量 一些引用的库的占有量 一些最后的统计数量 这些代码呢我们可以在 IAR 里面打开 它这里面已经打开了 可以在 OUTPUT 这个地方有一些工程 打开它就行 打开之后呢我们可以看到 framework.c 这几个东西 它里面主要包含了一个 AUXRAMimage 也就是说我们通过 sensor controller studio 编译出来的这些二进制的东西 我们是以这样一个数组的形式 而且是 16 位数组的形式存放在 RAM 里面的 RAM 呢我们后面需要把它拷贝到AUX 它自己的2K的那样一个RAM里面去执行 也可以看到这里面一些 IO 的初始化的东西 这些 IO 初始化的东西呢 确实没有在一些相关的资料上 找到他的一些说明 所以说这个具体的数值是为什么是这个样子 我们也没有办法去揣摩它 可以看到这里面 它主要是启动 Rtcticks stopRtcticks 这些对时钟的一些控制 还有对资源的一些控制 这个资源呢我们可以看到它 初始化了一个我们需要的 analog input 就是 ADC 采样的那个 IO 端口 还有一个呢就是 output 这样一个数字端口 它主要是用来控制我们的 light sensor的一个 power 的这样一个东西 然后我们可以看 framework framework 里面的话 它主要是对 比如说 interface init 对它自己的一个初始化 启动 task 结束 task 还有一些对 task 操作控制啊 等等这样一些东西 这些东西它都是它自己生成的 这两个代码的话呢 由于它是生成代码 由于它是生成代码 所以说如果我们在里面做了一些临时性的修改 它可能在我们下一次生成的时候就会被覆盖掉 那么我们现在编译它 编译了之后呢 因为我自己是用的是 JLink 因为 JLink 可能比 XDS 确实要快得很多 这里面简单设置一下之后 我们就可以把它烧进去 烧进去我们可以看到 前面是一些对芯片的一些操作 这个包括一些 DOMAIN 控制的一些操作 包括 GPIO 的一些操作 这个毕竟不是重点 还可看到一些比如说 1234 4个灯 嗯这个四个灯 主要就是 smartRF06 这个基板上面有的四个灯 我们等会的任务呢就是说 要根据不同的光照强度 来把这四个灯依次点亮 一直要到我们很关注的一个地方 这个地方呢就是说 注册一个 callback 回调函数这样一个东西 ctrlready 和 taskalert 这两个东西 taskalert 呢 我们可能有印象的话 应该在这个地方 可以看得到 这里面 fwgenalertinterrupt 这个地方确实是产生了一个中断 那么我们在这里面 需要有一个对这个中断处理的 这样一个回调函数 那么它设置到这个地方 就是简单的把它设置到一个全局变量里面去 先不管它 对接口本身进行初始化 我们可以看到它是使用的 这样一个 driver setup 这样一个 driver setup 呢也是在 SCIF.C 里面去 生成的 生成的话 它里面有几个地址 这几个地址呢 400E0000 这个地址是 AUX 的 SRAM 映射在 MCU 地址空间里面的一个地址 具体为什么他要有一个 E2 或者是一个 D0 这个东西我们也没有在相应的资料里面看到 包括你 E2 这个地方为什么是这个数据结构 我们也没有相应的资料去看这个东西 所以说也没有办法理解它 就简单去过 那这个里面 对 SCIF 就是说我们的 AUX 进行一些初始化 因为这里面这样一些 寄存器的具体的域 在我们的手册里面讲的还是比较清楚的 包括你像 AUX Controller setup 这里面很多东西乱七八糟的 都还讲得比较清楚 所以这里面也就不一条一条的去解释 我们可以看到这里面呢 它有一句拷贝 把我们的 AUX RAM Image 拷贝到我们的 AUX RAM BASE AUX RAM BASE 我们可以看到就是它的 400E000 就相当于是把我们刚才直接这样一个东西 拷贝到我们的 FRAM 里面去了 我们在这里 就简单的初始化了我们的一个模拟输入 还有一个数字输出 初始化这两个引脚 这后面就是 这后面是对一些外设的操作 这个操作呢 就像刚才说的在手册里面 还是讲的比较详细的 AUX event controller 这样一个事件的这样一个设置 我们可以看到 它里面有 software ADC 的第二个通道 因为第一在手册上面有具体的解释 所以说这里就不再重复的去解释它 我们可以看到在这个地方 我们有 寄存器控制 初始化 这个东西呢就是我们之前在手册上面 和内部里面发现的不一致的地方 就是说它这个中断号呢 22 号手册上面是 UART1 这个地方他确实用的 software event 0 这还是比较麻烦的一个东西 但是我们这里把他设置成我们刚才 拷贝的这样一个东西 ready 好 这个里面把 把这个中断的数组放到 RAM 里面去 使能这个中断 同样的我们 task 这个也是按照这样的方式 task 呢 它是用的是另一个 event software event 1 这个东西 29 这个东西在手册上面也没有描述 也就相当于是把我们 刚才注册的这样一个函数域名 把它放到内存的 interrupt vector 里面去 然后清除中断 然后使能它 这个就相当于是我们就完成了初始化 RTC 的初始化 RTC 呢主要是用在 我们 sensor 里面的这个地方 比如说 firmware schedule task 这个地方 这地方就是说 我们在这里初始化的 tick 的值它是当成一个 tick 来使用 我们打开中断 使能这个 RTC 这里面呢 我们也可以看到我们刚才 config 这个地方大家可能比较熟悉了 configPbinthresholds 这里面就刚才说的 我们可以通过这样一个数组数据结构 在AUX和MCU之间进行一些基本的信息交互 比如说这里面的一些Pbinthreshold 我们需要设置它的一些阈值 比如说这个 pbin 这个里面 我们需要设置它的一些阈值 这就是我们 ADC 采样出来之后 需要比较的这样一个值 我们设置它然后这里我们启动 我们第一个 task 这个 task 就是在这里 我们的一个 task resource 这就是我们第一个 task 我们启动它 启动之后我们就整体进入了一个死循环 那么我们怎么看它的一些效果呢 可以在这个地方 就是说 task alert 它毕竟是要整个中断过来 所以说我们在这里打个断点 因为这个地方 我们是用的是光照强度 所以说我们就借用 笔记本电脑的这个屏幕的强度 我们来看一看它的一些效果 这里呢我们可以看到这个灯都没有亮 这四个灯 那我们通过这个电脑给它一个亮度 好 看到现在第一个灯亮了 因为这个亮度只有这么高 所以说这个第二个他可能也亮不了 好 我们回来看 回来看 这个地方呢 因为他毕竟他需要给一个中断过来 所以说我们在这个地方打个断点 我们可以再一次看一看 断点来了 来了之后呢 我们先告诉 MCU 我们已经知道你过来了 初始化把这个 GPIO 的 LED 这几个东西设置一下 根据我们光照强度的值 现在需要点亮第一个灯 就是刚才那个红色的灯 所以说我们现在就把它点亮 点亮之后呢告诉 AUX 我已经知道你的一些状态 然后我们就继续进入等待的一个过程 大概的流程也就是这个样子 总结一下呢 就是说我们 有几个比较重要的地方 第一个是设置它的回调函数 这个回调函数是用在 fwgeninterrupt 的时候 我们可以得到一些事件 在这个里面去处理我们的事件 设置 RTC 的一个 Tick 时长 根据 config 还有一些 output.bin 这样的一些 双方面通讯双方面交互 可以使用的这样一种情况呢 我们设置相应的一些 在这个回调函数里面 我们对这个整个流程 或者整个逻辑进行一些处理 大概的一个这个框架呢是
课程介绍 共计11课时,3小时7分49秒

EEworld原创:大话TI CC2650

TI 无线 Wi-Fi CC2650 Wi-Fi产品

     本系列视频由电子工程世界(EEworld)联合TI重磅推出。
     该视频由EEworld社区资深工程师主讲,结合802.15无线器件,组网,应用等使用经验,讲述CC26xx芯片分析介绍、CC2650DK出厂演示程序使用和用途分析,射频相关基础闲聊等。旨在帮助新进工程师快速开启最新最潮的cc26xx系列无线设计。

推荐帖子

单片机晶振的作用以及原理解析
      每个单片机系统里都有晶振,全程是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。   晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率...
Aguilera 微控制器 MCU
请帮忙推荐网络hub芯片?
现在在系统里面需要实现7个或者8个MCU的网络互通,再外加一个和外面的web相连; (不考虑现成的hub,应为体积的问题,还有接口的问题) 可以支持10/100/1000M的自适应; 大家有芯片推荐吗? 谢谢! ...
37°男人 模拟与混合信号
SysConfig如何助推嵌入式系统开发
嵌入式系统开发人员面临的重大挑战之一是如何高效而精确地配置系统。当今先进的微控制器(MCU)包括各类处理器内核、硬件加速器、先进的无线电、精密的外围器件和接口,并带有复杂的管脚多路复用方案的封装。 许多半导体供应商提供的软件示例可为嵌入式设计提供起点,但是开发人员通常必须修改各种参数、事件和变量,以针对特定应用优化软件。这些修改通常需要查阅许多技术文档,以识别和更新特定的寄存器或源代码行。考...
alan000345 TI技术论坛
功放的6种保护功能以及常见的故障维修方法
功放的六种保护功能:   1、软启动保护   在大电流吸取量的音响设备,接通电源的瞬间其流过的电流值可以达到其平均电流值的4-10 倍时,对电网和设备本身都是一个冲击,严重的时候会损坏设备。   此时软启动电路能在设备开关的瞬间抑制电流的涌入量,让它平稳的达到正常起到保护设备和不引起电网波动的作用。通常用热敏电阻(NTC)的负温度特性来实现这个功能。   2、直流保护   当功放输出级发...
Aguilera 模拟与混合信号

szwtyh

学习了,很好的一款芯片

2022年01月04日 14:19:30

大明58

讲述CC26xx芯片分析介绍

2020年05月11日 09:07:55

hawkier

好好学习,不断长进

2019年11月05日 13:05:45

熊猫仙

老师讲的很详细,挺好的

2019年06月24日 11:53:52

zwei9

学习一下

2019年04月06日 00:29:37

dingxilindy

好好学习天天向上学习学习。

2019年04月04日 13:11:04

hellokt43

好好学习天天向上

2019年02月13日 10:50:05

cyrus1992

学习下

2018年12月15日 00:15:58

dl265361

学习

2018年12月12日 22:32:57

天马行空0

学习学习

2018年12月10日 17:02:31

分享到X
微博
QQ
QQ空间
微信

EEWorld订阅号

EEWorld服务号

汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新文章 手机版

站点相关: EEWORLD首页 EE大学堂 论坛 下载中心 Datasheet 活动专区 博客

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved