- 本课程为精品课,您可以登录eeworld继续观看:
- CC2650 - 事件和传感协控制器(上)
- 登录
- 课程目录
- 相关资源
- 课程笔记
大家好
我们继续来看看 TI 的 CC2650
这颗无线 SOC 芯片
一些概况呢在前面的视频中已经有所讲述
所以说我们今天这里呢
只了解一下这个芯片的事件
和传感协控制器的一些简单情况
我们分四个部分来了解
第一个部分是事件路由
它是协控制器与MCU
外设与外设之间事件通知的一种机制
第二部分是传感协控制器的一些大概情况
第三部分是关于
sensor controller studio 的一些简介
最后呢我们用一个例子来结束今天的视频
收到消息会自然就涉及到三个实体
第一个是消息的发送者
第二个消息的接收者
最后就是消息的通路
这个地方呢我们对
消息和事件本身是不做区别的
可以认为事件是一种特殊形式的消息
我们来看看 2650 的路由架构
这个是一个很典型的生产者 消费者
还有中间通路的这样一种路由形式
中间的消息总线
他是把生产者产生的消息
发送给消费者的通路
路由形式是最基本的直接通路
也就是说这个中间
不对通道内的消息做任何的处理
路由可以是
消息可以是硬件的中断
可以是软件的可编程中断
也可以是 DMA 触发等等东西
但是并不是说所有的消息
都可以通过动态路由的形式传输
只有很小一部分消息
能够有这种路由的能力
而大部分消息呢
都是通过静态的连接形式存在
路由之间是一种多对多的这样一种关系
也就是说一个生产者的消息
可以被多个消费者接受
同时呢一个消费者
也可以接收多个生产者产生的消息
如果是同时产生的话
通过或逻辑也就是 or 给出最后的逻辑
消息本身它是被认为是
电平触发的高电平作为它的一种识别条件
通过这个图我们还可以看到
消息全部都是送到消息总线上面
在接收端
我们还需要进行消息的一些选择
来设定哪些消息进行响应
2650 呢是一个十分复杂的 SOC
这个里面可以看到它有两条消息路由总线
这两条总线它至少是在逻辑上面是分开的
一条总线呢在 AON 域
也就是 Always ON 这个域里面
一条总线呢是在 MCU 域里面
这两条总线呢以 Always ON
AON 这个外设作为桥接
也就是这个框红色的框
通过这个桥接手段呢
AON 域 和 MCU 域
也可以进行消息的路由
把 AON 域里面的消息路由出来
给 MCU 域里面的消费者
这里面这个图里面黄色的这一框
就是所谓的一些消费者或者说是订阅者
他就是能从这些消息总线上面
接收消息来源的这样一些外设
然后进行响应
我们在使用过程中
也发现一个手册中的描述问题
在手册中对中断号二十二和二十九
它的描述跟我们在
我驱动内部里面发现的是不一样的
驱动内部里面它是把它赋给了
software event 0 和 event1
但是在手册里面似乎好像有点不是很对应
这个手册呢参考的是刚刚发布的第三版
也就是 C 后缀是 C 这个版本
寄存器呢我们一般用寄存器操作的话
只需要对相应的寄存器进行设定
我们要的值
这里我们可以看一看
它的一些相关寄存器
包括 MCU wakeup
唤醒 MCU 的一些事件源
在这里面包括我们的 pad
包括我们的 RTC JTAG
包括 AUX 就是协处理器自身的一些事件
Comparator ADC等等
我们从构架上面看
CC2650 内部有三个处理器
一个是大家比较熟悉的 Cortex-M3
一个是传感控制处理器这里面
一个是 Cortex-M0 的设备内核
确实是一个比较复杂的 SOC
Cortex-M3 呢大家可能都比较熟悉
我们看协处理器里面
包含了有 GPIO 啊这个地方没有显示出来
GPIO ADC 采样的
比较器有两个 SPI 和 I2C
这个是通过 beagbone
怎么说呢
就是用 GPIO 来模拟的这样一个
就是用 GPIO 来模拟的这样一个
SPI 和 I2C 时序
计时器 time to DG converter
还有内部的 SRAM
它主要用来接入一些传感器的应用
这个也是 CC2650
这颗芯片的主要的一些应用场景
比如说呢 ADC
可以用在连续的信号监测
温湿度传感器等等的一些地方
比较器呢 comparator 呢
可以用于监控目标电压的阈值
SPI 和 I2C 呢可以操作一些常见的传感器
比如说加速度
陀螺仪等等
这里有个电流源
和定时器 time to digital converter
他们和比较器一起呢可以做电容触摸的一些应用
这些应用的一个典型应用场景是主 MCU 休眠
然后当有事件触发的时候
再唤醒这个主 MCU
所以说 2650 呢搞了一个事件路由
搞了一个多电源管理的这样一个域
搞了一个协处理
可能也是希望在最大程度的
降低运行期的功耗
其他一些面向低功耗的处理器
也会有一些相关的设施
虽然说实验上面各有千秋
但是本质上呢也可以看作是
同一种的一种设计模型
包括协处理器 SRAM 在内的所有设施
他们都可以在主 MCU
休眠的时候继续工作
也就是说保持他的时钟
AUX 也就是我们的协控制器
它是挂在 MCU 的访问空间里面的
也就是说我们可以通过 MCU 的操作
来对 AUX 协控制器进行访问
但是呢反过来是就不可以
它只能通过消息的形式
也就是说 AUX 协处理器
只能通过消息的形式
把请求传递给 MCU
从这个框图里面呢
我们也可以看出
这个协处理器里面有外设总线
有消息总线
有各种外设
乱七八糟的 有仲裁 有 SRAM
还有处理器等等这样一种设施
系统总线呢是协处理器与 MCU 通讯的总线
这里面仲裁器认为
协处理器的优先级高于主 MCU
又也就是说这里面的一些外设
被 MCU 和协处理器同时使用的话
那么使用权是被总裁给协处理器的
我们可以看到这里面有这个 Controller
它有自己的一套指令
它是一颗简化的 MCU
但相关的指令我们可以在手册里面找到
这里我就
sensor controller 这个地方
我们可以看到它的 instruction sheet
这个还是比较复杂的
有点类似我们的 cortex
但是它又有很多不一样的地方
有一些特殊的指令
他手册上面也没有说
这颗 U 一个什么芯
反正我们大概看一看就行
那 GPIO IO control
它可以设置输入输出
设置 开漏 open source 等等这样一种设置
但是这些设置呢一般是通过
sensor controller studio 进行设置
Timer to digital converter 它的最高
这块它最高可以
以 96 兆赫兹的时钟速度测量
它主要是用来测量起始事件
和结束事件之间的一些时间
一般呢在一般我们会使用
高速 RC 震荡器或者是二十四兆
外部振荡器作为它的时钟
如果是要测量内部振荡器的频率
就是芯片内部的振荡器的频率的话
那么就需要使用它的低速时钟
作为它的时钟源
因为具体的一些时钟源
在我们的手册里面都可以看到
这个地方都可以看到
内部信号量
semaphore 它是一个邻域信号量
也就是说它不是我们一般认为的那种
技术信号量
它主要是用来同步 AUX
和 MCU 之间的一些访问
还有一些数字控制用于配置
器件的内部震荡体
ADC 呢它是一个转换器
最高每秒是200K
它有八个通路
基本概念上和我们的一般常用的 ADC
是非常类似的
对于这个 AUX 呢
TI 基本上也只给出了使用
sensor controller studio
进行操作的一些手段
在我们的手册里面
对 AUX 的描述
对它的指令集有一些描述
然后对他的一些状态
对他的一些内部的一些使用
有一些简单描述
但是整体上来说的话
光凭着我们的手册
和一些简单的事例
可能在这个使用上面
还会存在一些很大的一些问题
这个也希望 TI 后面的话
能够加强一些资料的建设
最后呢我们看一看这个
sensor controller studio
这个呢是一个编译环境
同时它又有一些调试的功能
在 SCS 就是这个
sensor controller studio 的帮助里面
我们可以看到一些基本的
函数的一些使用情况
这个可以认为是
TI 不面向用户的一个 TI 的专用库
也就是说这些函数呢
我们也只能看到他的名字
比如说 SPIbegin
这里面的调试器它也有
这个东西就是一个最基本的一个调试器
连断点都没办法打
这个可用性还是非常的差
我们现在来看看
sensor controller studio
它的一些基本的一些应用
这个 studio 里面包含了一些示例
就是用作协传感器跟 MCU 之间
怎么互相工作的一些事例
我们先打开这个 studio
可以看到这个基本欢迎界面
有我们的项目
有我们的示例
还有一些帮助
先看帮助
帮助的话呢这里面有他 IDE 的帮助
这个确实描述的是非常简单的
还有一些我们资源的一些介绍
包括我们的 GPIO 一些介绍
怎么配置啊
怎么使用啊
怎么调用它的一些资源
包括一些外设
比如说 ADC TDC 的一些常量
它的一些描述
还有我们怎么去用它这样一种外设
这里面比较重要的呢
是这个类 C 语言的 similar to C
类 C 语言的这样一种简单的介绍
确实讲得很简单
这个也就几页的地方
主要就是有比如说我们的注释
变量的一些声明
基本语法等等这些东西
一些访问呐反正跟 C 很像
所以说我们看一看也基本上可以了解到
有一些不一样的地方呢
他反正这个也比较简单
这里面比较重要呢
就是 data structure 这个数据结构
这个数据结构包括包括了四个
Task configuration task 配置
任务的输入输出和他的一些状态结构
这个等会我们在示例当中都可以看到一些体现
还有他的汇编语言的描述
汇编语言呢也是比较麻烦的
这还有那么多
我们现在打开我们的工程
analog light sensor 这个工程
它主要是用 smartRF06
这个基板上面的 light sensor
做的这样一个应用
也主要就是用 ADC
来采样它的输出值的大小
来作为一个光强度的这样一种判断
我们这里呢有系统选择 芯片选择
看起来是蛮多
有封装还有我们最基本的一个我们的项目
这就是我们项目
项目里面的话呢
我们可以在 task resource 里面
选择我们需要用到的一些资源
这个 task resource 呢
可以在这里面寻找到一些帮助
包括 UART analog 这些东西
我们的一些帮助
这个例子当中
他用了ADC的一个采样
用了一个模拟信号量的输入
用了一个数字信号量的输出
用来比如说关闭
或者打开这个 light sensor
用了一些延迟和一个基于 RTC 的
这样一个任务的简单调度
这些前面的外设
我们都可以在不同的项目当中去选择它
比如说我们选择一个 UART
你先看看这里的效果
这里面呢我们可以看到
它写的是告诉我们可以用的一些资源
前面都是跟 ADC 相关的
这里面应该是 firmware 固件相关的
这个是 GPIO 的
那么我们觉得跟我选一个 UART 的进来
我们可以看到
这两个缓冲区呢都是有个64个字节
在这里面噢
我们可以看到 UART emulator
这个东西我们是可以在程序里面使用的
同时呢在 constant
这个应该是一个常量的里面
我们看到有缓冲区的设置
然后我们把它先搞掉
毕竟没有用它
这个整个程序分成了三个段
第一个段呢就是初始化段
第二段呢是执行代码段
第三个段呢是它的一些
最后终结的时候需要运行的一些段
在这个 IDE 里面
也是做了一个比较好的一个结构化的划分
在初始化段里面呢
主要就是用在我们这个程序
第一次运行的时候
只运行一次的这样一种情况
那么这个地方呢
它就是简单的把 analog
这个应该是一个 analog 的一个东西
把它设置然后我们就触发
我们的第一次的任务调度
我们可以看到
然后一旦触发任务调度之后
我们就进入到可执行段
这个执行段
他在每一次任务调度的时候
我们可以看到
最后它都有一个任务的调度
来不断地重复执行这里面的所有的东西
这里面是不断的重复执行
我可以看到对 output
打开 light sensor 这样一种操作
停一会儿然后我们对 DK 的操作打开它
然后读取它的值
然后读取它的值
然后最后把它关掉
然后把 light sensor 关掉
然后我们把读取它的值呢
跟我们存储在
我们数据结构当中的数据进行一些对比
那么我们可以看到刚才所有的
比较重要的几个结构
它里面有 config
output state
这样几种结构呢
主要就是用在跟 MCU 之间的一些通讯
也不叫通讯吧
就是跟他们之间的
数据交互当中
使用的这样一种数据结构
在 MCU 的代码里面
我们可以直接对他们进行引用
等会我们在产生出来的代码里面
可以看到他们的存在
根据我们 ADC 的值
读取不同的一些
检测我们现在不同的状态
因为上一次这个代码执行的时候
我们是需要判断这个 bin
这个呢就是一个index的意思
就是说我们在这个数组里面
0 到 5 一共六个数的数组里面
我们现在是处于哪种光照强度
根据这个光照强度呢
我们再来调整我们自己的一些
这个阶段里面的一些输出
我们可以看到一些
最大最小值的一个简单的一个
去抖动的一个东西吧输出
然后证明比较重要的呢是在这个地方
bin 我们升级的 output.bin
output.bin 的话
就是说我们下一次
再回到这个地方来执行的时候
它还是可以通过这个地方把它读出来
对一定要记住
这个是不断执行的这样一个过程
我们这块呢有一个 firmware generate
这样一个 alert interrupt
这个东西呢
主要是用在跟 MCU 通讯
唤醒 MCU 这样一种工作上面
我们待会可以在这里面看到
最后呢我们再一次调度我们的这个任务
这个任务 next education 呢
这个地方呢我们可以看到
它进行下一次的调度
下一次调度呢就是一个
RTC 的这样一个时间段
这个 RTC 呢这个时间段
我们是在 MCU 端进行一些设置
等会我们也可以看到
这个没有一些最后清理的工作
我们这里面用了两个 GPIO
一个是那个数字 GPIO
有一个模拟 GPIO
数字的 GPIO 呢
主要是用打开和关断 light sensor 的 power
模拟 GPIO 呢
主要就是用在我们的 ADC 的一个输入端
这里面呢我们很方便地用鼠标就可以
对它们进行一些配置
但是在手册里面好像说的不是很详细
我们也没有找到哪里地方有这样一种资料说明
所以说我们就还是用它吧要简单一些
而根据之前的我们一些代码呢
我们最后来生成
AUX 协处理器的这样一个代码
我们生成了
生成之后呢
我们可以对它进行调试
调试的话
我们可以用一个他的 testing driver code
就是他自己的一个调试框架的代码
产生之后呢我们也可以用它进行编译
编译之后
然后一些调试
我们可以打开看看
这个地方 task testing
这个这里面有一些我们可以打开
课程介绍
共计11课时,3小时7分49秒
猜你喜欢
换一换
推荐帖子
- 电路级静电防护设计技巧与ESD防护方法
- 本帖最后由 qwqwqw2088 于 2018-5-11 08:21 编辑 静电放电(ESD)理论研究的已经相当成熟,为了模拟分析静电事件,前人设计了很多静电放电模型。 常见的静电模型有:人体模型(HBM),带电器件模型,场感应模型,场增强模型,机器模型和电容耦合模型等。芯片级一般...
- qwqwqw2088 模拟与混合信号
- RS485芯片SN75LBC184烧毁
- 最近做了一个RS485接口的开关,使用TI的 SN75LBC184芯片,原理图如下 MCU使用串口通过硬件电路转485,右上的485电路为触摸屏控制器的485接口,现在的问题是,PCBA下方的这个485芯片会概率击穿烧毁,帮忙看下可能的问题,谢谢。 ...
- tziang 模拟与混合信号
- 嵌入式DSP教学实验箱_数字信号处理教程:3-5 AAC音频编码实验
- [localvideo]4f0b73f0bf20cd6333ff7190f169f945[/localvideo] 1、实验目的 本次实验操作教程是基于创龙教仪DSP教学实验箱:TL6748-PlusTEB演示录制的。 本次实验的目的是了解AAC音频格式,掌握AAC音频编码的原理,并实现将WAV格式的音频编码为AAC格式。 2、实验原理 ...
- 创龙教仪 DSP 与 ARM 处理器
- 希望获得这个开发板从而进入MSP430的大门
- 又要有开发板团购。真是一个大喜讯。 只是用过51,没有用过MSP430. 听说MSP的门槛很高。一直没有下决心进入 这次EEWORLD搞MSP430开发板团购提供了一个很好的机会。 使我可以进入MSP430的大门。 期待中。 [ 本帖最后由 daijun 于 2011-11-18 09:00 编辑 ]...
- daijun 微控制器 MCU