Blog

(24条消息) CC1310开发笔记_梁峰的博客-CSDN博客_cc1310开发

CC1310开发笔记

梁峰的个人博客 2020-10-13 17:52:12 224 收藏 2

分类专栏: 物联网 单片机 文章标签: CC1310 物联网 iot 单片机 ti

版权

硬件资源

双核,M3负责协议,M0负责无线通信,还有一个sensor控制器,用于采集数据,低功耗运行。

128kBflash

20kBSRAM

senserController

传感器控制器是其他单片机没有的功能,cc1310可以说是3核,

传感器控制器可以独立于主CPU控制外围设备。例如,主CPU不需要唤醒来执行ADC样本或通过SPI轮询数字传感器。这节省了当前时间和唤醒时间,。ti提供一个PC工具(SCS)让你配置传感器控制器,选择哪些外设被控制,哪些条件唤醒主CPU。(SCS)是一个独立的IDE,用于开发和编译用于在传感器控制器上执行的微代码。有关的更多细节和文档,请参考Sensor Controller Studio帮助

开发方式

cc1310提供的sdk具有两种开发方式,一种是直接操作寄存器。类似51单片机,另一种是利用ti提供的api函数来实现。这些都放在了sdk的devicelib中

1.寄存器模式

寄存器方式模式开发在51比较常见,一般会把所有寄存器包含在一个reg51.h的头文件中,这样操作寄存器比较方便,在cc1310中也有这样的头文件,不同之处是cc1310寄存器太多,一个.h文件容易乱,具体位置在 工程 的inc下,每个模块的头文件以hw_xxx.h命名,其中xxx为模块名,这样方便查找。

2.API模式

api开发模式是ti写了一套c语言的库,类似于stm32 的hal库,屏蔽了底层的寄存器操作,能够实现快速开发。缺点是效率可能没有直接操作寄存器高

官方建议是配置外设寄存器时可以使用api,在应用中操作外设时,可以操作寄存器,当然任选其一也是可以的。

3.ROM函数

cc1310将一部分驱动库已经固化到了rom中,用户可以直接调用,可以节省更多的flash空间给用户使用

4.HAPI 函数

cc1310 driverlib还提供了一种HAPI函数,这种函数固化在ROM中,用户只能调用,看不到源代码。

HAPI函数可以在rom.h中看到

5.错误检查

devirerlib中所有函数提供了函数检查,在函数调用入口处通过断言来实现,为了提高效率可以在调试完成后将断言assert定义为空。

断言一般在调试时使用,便于发现错误。

6.设备设置

DriverLib包含一个称为SetupTrimDevice()的特殊函数,必须总是在ROM引导序列之后调用它,以便将修剪设置和某些客户配置(从CCFG)应用到设备。SetupTrimDevice()由CC13/26xxWare提供的启动文件调用。

7.客户配置

硬件介绍

1.程序下载方式

uart 内置bootloader

spi

jtag 利用xds100v3.0下载器

2.复位

调用 HAL_SYSTEM_RESET();可以复位,或者使用ccs中 Board Reset

3.aon

除处于关机模式(数字电源关闭)外,AON域包含始终处于启用状态的电路。这个电路包括以下:RTC可以用来唤醒设备从任何状态,它是活跃的。RTC包含三个比较寄存器和一个捕获寄存器。在软件支持下,RTC可以用于时钟和日历操作。该RTC是时钟从32 khz RC振荡器或晶体。RTC也可以补偿滴答在正确的频率,即使当内部32khz RC振荡器被使用而不是晶体。电池监视器和温度传感器可通过软件访问,并提供电池状态指示以及一个粗略的温度测量

4.引脚分配

cc1310牛逼之处可以将任何外设如Uart等分配到任意io上,这个分配由IOC实现。每种外设都有一个PORTid,每个物理引脚都有一个DIOid,IOC负责将其关联在一起(除特殊的AUX外设以外)

其中DIO并不是物理引脚的pin,他们之间根据封装不同有不同的对应关系,如下表所示:

PORTid与外设之间的对应关系如下

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BeBPZkFq-1602582613281)(D:\项目\笔记\cc1310学习笔记.assets\image-20200901112853122.png)]

ioc又分为mcu iot和aon ioc,mcu掉电前将透明模式关闭,ioc配置由aonioc接管,配置不丢失,mcu上电后恢复透明模式继续接管。

代码片段

1 uart

所有外设几乎都是先init 然后在open 在init中一般操作是将所有外设放到一个驱动结构体数组中,open是从init的数组中将某一个取出来,得到所谓的句柄,其实就是一个结构体指针,在目标结构体中存储有这个外设所有的操作函数。