精华内容
下载资源
问答
  • 原标题:TI最新CC2640R2L与CC2640R2F区别详解TI(德州仪器)最近推出的CC2640R2L是2.4 GHz无线微控制器(MCU),支持低功耗Bluetooth 5.1和专用2.4 GHz应用,包括Wi-Fi®、Bluetooth Low Energy、Thread、ZigBee®、Sub-...

    原标题:TI最新CC2640R2L与CC2640R2F区别详解

    TI(德州仪器)最近推出的CC2640R2L是2.4 GHz无线微控制器(MCU),支持低功耗Bluetooth 5.1和专用2.4 GHz应用,包括Wi-Fi®、Bluetooth Low Energy、Thread、ZigBee®、Sub-1 GHz MCU和主机MCU,它们都使用单核软件开发工具包(SDK)和丰富的工具集,共享一个通用、易于使用的开发环境。同是德州仪器推出的低功耗无线微控制器CC2640R2F和CC2640R2L,能收发范围更大的射频信号。CC2640R2L作为CC2640R2F的低成本版,在价格方面更低。

    从芯片支持的蓝牙协议上看,CC2640R2F支持BLE 5.0协议,CC2640R2L支持BLE 5.1协议,可以利用AOA/AOD进行室内定位,非常适用于提升物联网(IoT)应用的性能。

    内核方面,CC2640R2L和CC2640R2F均是48 MHz ARM® Cortex®-M3内核,CC2640R2F和CC2640R2L都拥有275KB 非易失性存储器,包括128KB系统内可编程闪存,高达 28KB系统SRAM,其中20KB为SRAM。CC2640R2L相较于CC2640R2F,没有Sensor Controller Engine,减少的器件使其价格更低,更加满足基础透传功能的应用场景。

    CC2640R2L参数:

    微控制器:

    强大的Arm®Cortex®-M3

    高达48 MHz时钟速度

    275KB的非易失性存储器,包括128KB的系统内可编程闪存

    高达28KB的系统SRAM,其中20KB是超低泄漏SRAM

    8KB SRAM用于高速缓存或系统RAM

    支持“空中传送”升级(OTA)

    符合RoHS标准的封装:

    5‑mm×5‑mm RHB VQFN32(15个GPIO)

    7‑mm×7‑mm RGZ VQFN48(31个GPIO)

    外围设备:

    所有数字外设引脚都可以引到任何GPIO

    四个通用定时器模块(8个16位或4个32位定时器,每个均有PWM)

    UART、I2C和I2S

    实时时钟(RTC)

    AES-128安全模块

    集成温度传感器

    低功耗:

    宽电源电压范围

    正常工作:1.8至3.8 V

    外部调节器模式:1.7至1.95 V

    射频部分:

    2.4 GHz射频收发器,兼容蓝牙低功耗5.1和早期的LE规范

    出色的接收机灵敏度(BLE为-97 dBm)、选择性和阻塞性能

    可编程输出功率高达+5 dBm

    单端或差分射频接口

    CC2640R2F参数:

    微控制器:

    强大的 ARM® Cortex® -M3

    高达 48MHz 的时钟速度

    275KB 非易失性存储器,包括 128KB 系统内可编程闪存

    高达 28KB 系统 SRAM,其中 20KB 为超低泄漏 静态随机存取存储器 (SRAM)

    8KB SRAM,适用于缓存或系统 RAM 使用

    支持无线升级 (OTA)

    封装符合 RoHS 标准:

    2.7mm × 2.7mm YFV DSBGA34 封装(14 个 GPIO)

    4mm × 4mm RSM VQFN32 封装(10 个 GPIO)

    5mm × 5mm RHB VQFN32 封装(15 个 GPIO)

    7mm × 7mm RGZ VQFN48 封装(31 个 GPIO)

    外设:

    所有数字外设引脚均可连接任意 GPIO

    四个通用定时器模块 (8 × 16 位或 4 × 32 位,均采用脉宽调制 (PWM))

    12 位模数转换器 (ADC)、200MSPS、8 通道模 拟多路复用器

    低功耗:

    宽电源电压范围

    正常工作电压:1.8V 至 3.8V

    外部稳压器模式:1.7V 至 1.95V

    关断电流:100nA(发生外部事件时唤醒)

    射频 (RF) 部分:

    2.4GHz RF 收发器,符合 Bluetooth 低功耗 (BLE) 4.2 和 5 规范

    出色的接收器灵敏度(BLE 对应 –97dBm)、可选择性和阻断性能

    最高达+5dBm的可编程输出功率

    单端或差分 RF 接口

    信驰达科技现已推出CC2640R2L模块,支持室内定位能力强大的BLE 5.1协议。早在2019年1月21日,蓝牙技术联盟Bluetooth SIG宣布核心规范 Core specification 5.1发布,引入了期待已久的AoA/AoD特性。AoA/AoD到达角/发送角测距是一种基于信号到达角度/发送角度的定位算法,通过蓝牙5.1设备感知发射节点信号的到达/发送方向,计算接收节点和发射节点之间的相对方位或角度,然后再利用三角测量法或其他方式计算出未知节点的位置,非常适合物联网室内定位应用。

    现在已经有越来越多的厂商支持蓝牙5.1标准。蓝牙5.1运用在室内定位有着很多优势,采用CC2640R2L芯片的模块,成本更低,支持BLE 5.1,能够满足用户更多的需求,例如信驰达科技推出的综合性能很强的RF-BM-4077B1L和RF-BM-4055B1L模块。

    信驰达科技专注蓝牙领域十年,拥有丰富的模块设计经验。信驰达科技的蓝牙模块表现出色。

    信驰达科技是行业知名度和信誉度优秀的无线射频解决方案提供商及低功耗射频核心器件供应商,旗下产品包含丰富的TI系列产品,例如CC2640R2L。专业的技术支持团队为您提供专业的定制化服务,更多TI方案,请关注信驰达科技。

    原文链接:https://www.szrfstar.com/news/TI%E6%9C%80%E6%96%B0CC2640R2L%E4%B8%8ECC2640R2F%E5%8C%BA%E5%88%AB%E8%AF%A6%E8%A7%A3-cn.html返回搜狐,查看更多

    责任编辑:

    展开全文
  • CC2640R2F BLE5.0 CC2640R2F软件架构

    千次阅读 2017-08-03 11:00:52
    下图展示CC2640R2F支持的两种开发模型,本文讲解都集中在图一,也就是整个ble协议栈和应用都工作在一个CC2640R2F的单SOC解决方案。 单一设备:Controller、Host、Profile、应用程序都在CC2640R2F上实现,作为...
    公司主页 文档归类 淘宝

    软件架构

    开发模型

    下图展示CC2640R2F支持的两种开发模型,本文讲解都集中在图一,也就是整个ble协议栈和应用都工作在一个CC2640R2F的单SOC解决方案。

    图4. 单设备处理器和简单网络处理器配置

    • 单一设备:Controller、Host、Profile、应用程序都在CC2640R2F上实现,作为真正意义的单芯片解决方案。这种模型是使用CC2640R2F时最简单和最常见的。TI的大部分示例项目都使用此模型。这种模型是最具成本效益,并提供最低功耗的性能。

    • 简单网络处理器:简单网络处理器(SNP)实现了BLE5-Stack的Controller和Host。此外,SNP公开了一种用于调度协议栈和外部MCU之间的通信的接口。这样的设计促进了双MCU实现,因为应用处理器(AP)只负责管理自定义配置文件和应用程序代码。协议栈相关功能(如安全性)都在SNP上实现。SNP目前支持外设和广播设备的GAPRole。通过SNP API与SNP进行通信。SNP API是基于统一网络处理器接口(UNPI)的,支持UART和SPI传输层。了解更多信息, 请参考Unified Network Processor Interface wiki页面。TI还提供了SAP库,它实现了一个UNPI主数据库和SNP API。SAP库可以移植到任何支持TI-RTOS的处理器,也可以作为开发定制双MCU解决方案的参考。有关SNP的描述,请参阅simple_np文件夹中的README.html页面,高级用户可以阅读SNP API Reference,了解支持命令的概要。

    SDK 平台

    CC2640R2 BLE5.0 开发环境搭建我们详细讲解了SDK的下载、安装。整个SDK包含了我们蓝牙协议、CC2640R2F外设、TI-RTOS环境、编译链接组件等一系列软件工具集,如下图:

    图5. 低功耗蓝牙协议栈开发系统

    其中:

    • TI的实时操作系统(TI-RTOS),包含TI-RTOS的内核,优化的电源管理和外设驱动程序(SPI,UART等)
    • CC26xxware DriverLib提供了一个寄存器抽象层,由软件和驱动程序用来控制CC2640R2F SoC。
    • Bluetooth low energy protocol stack将CC2640R2F ROM中协议栈以库的形式提供。
    • Sample applications and profiles方便各种解决方案开始开发。

    BLE软件架构

    CC2640R2F低功耗蓝牙软件环境由以下部分组成:

    • 具有TI-RTOS内核,驱动程序和蓝牙配置文件的应用程序镜像
    • 实现低功耗蓝牙协议的协议栈镜像或库

    TI-RTOS是一个实时的,抢占型的多线程操作系统,利用任务同步运行程序。应用程序和低功耗蓝牙协议栈在RTOS中都作为单独的任务实现。低功耗蓝牙协议栈任务具有最高优先级。ICALL的消息传递机制用于应用程序和协议栈之间的消息交互。
    图6. 软件架构示例

    • 协议栈镜像包括低功耗蓝牙协议栈的底层,从LL到GAP和GATT层。协议栈虽然可以作为单独的项目镜像提供,但大多数情况下低功耗蓝牙协议栈都以库的形式提供给应用程序链接使用。
    • 应用程序镜像包括RTOS,配置文件,应用程序代码,驱动程序和ICall模块。

    目录结构

    默认SDK安装位置为:C:\ti\simplelink_cc2640r2_sdk_x_xx_xx_xx

    BLE5.0SDK 路径 描述
    docs 以上SDK平台所TI-RTOS、蓝牙开发、DriveLib全部相关的文档
    examples BLE5.0、BLE4.2、TI-RTOS操作系统Sys/bios相关驱动、CC2640R2F外设驱动相关例程
    Kernel TI-RTOS内核源码、组件
    source BLE4.2.BLE5.0协议栈相关代码、库文件,TI-RTOS相关驱动,软件中间件
    tools 类似BTool相关的工具

    Examples

    examples\floder包含BLE5-Stack、TI-RTOS内核和TI-RTOS驱动程序的示例源文件。支持SimpleLink CC2640R2 SDK示例的所有源代码可以在examples\rtos\CC2640R2_LAUNCHXL\中找到。每个产品的示例可以在其各自的文件夹中找到。

    Exampls 描述
    ble5stack BLE5.0相关全部例程 例如工作外设相关的simple_peripherl
    blestack BLE4.2相关全部例程 例如工作外设相关的simple_peripherl
    demos 工程模板,参考它实现你的产品工程
    drivers CC2640R2F IO、Uart、SPI、ADC等常用外设编程
    sysbios 内核相关的时钟、信号量、内存管理等例程

    IAR示例作为.eww项目文件直接双击使用的,而CCS项目是导入的。

    源码

    source\ti\ folder包含着BLE5-Stack,TI-RTOS驱动程序和各种共享模块的库和源文件。它们如CC2640R2F SDK’s source\ti\ directory所示,可以在各自的文件夹中找到。

    表5.CC2640R2F SDK’s source\ti\directory

    工程管理和编译选项

    熟悉TI早期的 BLE4.0/4.1 CC254x系列蓝牙协议栈的开发者,对OSAL一定不陌生,一个简单任务管理的操作系统抽象层完成8051内核对整个蓝牙协议栈的裸机实现。升级Cortex-M3 的 CC2640R2F,和基于TI-RTOS实时操作系统环境,TI保留了原来的OSAL对协议栈分层任务管理,保持了CC254x/CC2640蓝牙协议栈的统一维护。基于这种兼容设计,所以TI从工程管理区分了OSAL管理的Stack,以及基于TI-RTOS的App。

    如上图所示,打开 simple_peripheral 工作空间,cc264042lp_app和cc2640lp_stack分别对应基于TI-RTOS的应用工程,和基于OSAL的协议栈工程。

    App和Stack下面又对应着不同的编译置选项,这些编译选项对应着不同的编译、链接命令等。接下来我们详细理解对应 FlashROMFlashROM_StackLibrary。选项,FlashROM很好理解,前面的软件架构->存储系统我们已经详细了解过了,128KBFlash和128KBROM都服务于我们的应用和协议栈。FLASH_ROM表示一部分代码在Flash,一部分链接ROM里面,同样我们可以不链接ROM代码,直接将整整个代码发FLash方便调试,但是这里的_StackLibrary 要晦涩难懂的多, 该选项对应着TI对优化Flash空间的努力。

    区别于CC2640和CC2640R2F的SDK,CC2640通过将App和Stack分别编译成两个可执行文件(FLash镜像文件)分别放在FLash首尾区域。
    SplitImage FLash映射图

    注意:注意以上FLash映射图,App和Stack的代码空间并不连续,分别在128KBFlash的首尾。

    CC2640R2F增加配置选项尝试把Stack编译生成驱动库文件供App链接,也就是Stack编译后不再单独生成一个Flash镜像,而是一个*.a的库文件供App工程链接。最后生成一个可执行文件。

    Lirary  FLash映射图

    接下来,我们详细对比这两种方式编译选项。

    分离镜像配置 (FlashROM)

    与之前CC2640的BLE-Stack版本一样,应用程序和协议栈以两个单独的项目分别生成两个单独的镜像。这两个镜像文件占据单独的,不重叠的Flash页面。分离镜像的配置在某些场景中是有意义的,例如在OAD中独立管理应用程序或协议栈镜像下载。分离镜像项目具有以下特性:

    • 固定的协议栈入口地址
    • 协议栈项目生成一个单独的可执行文件(.hex、.out、*.bin)
    • 应用程序和协议栈之间有显式的Flash/RAM边界
    • 协议栈/应用程序能够独立更新(用户必须确保API兼容性)

    协议栈编译成库文件配置(FlashROM_StackLibrary)

    协议栈可以编译成静态库方式链接到应用程序。编译成库的协议栈可在编译选项上加StackLibrary来标识。编译成静态链接库的协议栈和应用程序可以共享连续的Flash页面,因此使用此编译选项可以为链接器提供更多的Flash空间优化。尽管这种编译配置节省了Flash空间,但是应用程序和协议栈的镜像文件不会分离。协议栈库选项具有以下属性:

    • 协议栈项目生成一个静态库(*.a)
    • 应用程序工程将以库的方式链接协议栈
    • 没有明确的应用程序/协议栈边界。应用程序的链接步骤决定了StackLibrary中代码的内存位置。有一些例外,如SNV。
    • 该架构通过链接器更有效地工作来节省Flash。
    • 这些项目使用了改进后的ICall架构

    注意:可能还是很多童鞋不能理解为什么这里节约了FLash空间,这个和Flash的Page 擦出写入有关系,如果编译成两个可执行文件方式,协议栈烧写到FLash后占据了某个Page(4KB)的1KB,应用程序的镜像文件再次烧写的时候剩下的3KB是不能再利用的。

    项目的编译配置

    SimpleLink CC2640R2 SDK的BLE5-Stack中的示例应用程序支持多个编译配置,以支持使用上述协议栈的编译类型。其他编译配置的创建是来支持开箱即用的RCOSC或OAD等功能。下表给出了BLE5-Stack中发现的编译配置及其彼此兼容性的摘要。

    工程类型 工程编译配置 描述
    App FlashROM 将应用独立编译成一个可执行文件,该配置选型下,对应的Stack工程也只能选择FlashRom方式,并且需要先下载Stack再下载App
    App FlashROM_StackLibrary 配合使用Stack的FlashROM_Library方式,同样需要先将Stack编译成一个静态库,然后再编译App连接协议栈库文件
    App FlashROM_StackLibrary_RCOSC 基于FlashROM_Library方式,使用内部RC代替外部低速晶振
    App FlashROM_OAD_Offchip 基于FlashROM配置选型方式的外部Flash无线固件升级
    Stack FlashROM 配合App的FalshROM编译选项,将Stack独立编译成一个可执行文件下载到Flash,需要先下载Stack再下载App
    Stack FlashROM_Library 配合App的FlashROM_Library编译选项,将协议栈编译生成一个库文件。

    BLE5.0的项目工程还并不完整,默认都支持了库文件编译方式,如果你需要更改工作空间到独立镜像编译方式,可以按照以下方式分别将协议栈和应用程序更改到独立镜像编译方式。

    更改协议栈工程从库文件选项编译到独立镜像选项(IAR)

    1. 选择需要编译的Stack Project
    • 建议创建一个新的工程编译配置:Project–>Edit Configurations–>选择 New 并为编译配置提供一个新的名称。
    1. 打开项目属性
    • 右键单击Project–>Options
    1. 选择Options–>Output选项
    • Output File选项选择Executable

      注意:这将启用调试器设置,并且成为模拟器的默认设置。

    1. 转到C/C++ Compiler Options–>Preprocessor选项
    • 从Defined symbols列表中删除STACK_LIBRARY符号。
    1. 转到Build Actions
    • 在Post Build步骤中添加Frontier作为边界工具:
      $TOOLS_BLE_DIR$/frontier/frontier.exe" iar "$PROJ_DIR$/$CONFIG_NAME$/List/$TARGET_BNAME$.map" "$PROJ_DIR$/../config/iar_boundary.bdef" "$PROJ_DIR$/../config/iar_boundary.xcl

      注意:该工具会将协议栈入口地址的信息交给应用程序。

    1. 转到Linker Options–>Extra Options选项
    • 选择Use command line options
    • 将以下内容添加到Command line options:(每行一个)窗口:
      -f $PROJ_DIR$/../config/lib_linker.cmd
    1. 转到Debugger选项
      根据您使用的调试器重新配置调试器设置。TI的开发板通常使用TI XDS110仿真器调试器。

    更改应用程序工程从库链接方式到独立镜像选项

    1. 选择需要编译的Application Project
    • 建议创建一个新的工程编译配置:
      Project–>Edit Configurations –>选择New并为编译配置起一个新的名称。
    1. 编译时去掉StackLibrary IDE文件夹。
    • 右键单击StackLibrary->Options...
    • 勾选Exclude from build然后选择OK
    1. 打开工程属性
    • 右键单击Project–>Options
    1. 转到 C/C++ Compiler Options–>Preprocessor选项
    • Defined symbols列表中删除定义的STACK_LIBRARY符号。
    1. 转到Linker Options–>Config选项卡
    • 使用Linker configuration file这个.icf链接器文件:
      $SRC_BLE_DIR$/common/cc26xx/iar/cc26xx_app.icf
    • Configuration file symbol definitions中删除FLASH_ROM_BUILD = 2:(每行一个)
    1. 转到Linker Options –> Library选项卡
    • Additional libraries中删除以下内容:(每行一个)窗口:
      $PROJ_DIR$\..\config\ble_r2.symbols
    • 将以下内容添加到Additional libraries中:(每行一个)窗口:
      $ROM_DIR$\ble_rom_releases\cc26xx_r2\Final_Release\common_r2.symbols
    1. 转到Linker Options–>Extra Options选项卡
    • Command line options中删除以下选项:(每行一个)窗口:
      -f $PROJ_DIR$/../config/lib_linker.cmd

    加入我们

    文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。

    CC2640R2F&BLE5.0-乐控畅联© Copyright 2017, 成都乐控畅联科技有限公司.

    展开全文
  • 本文最后修改时间:2017年10月17日 14:24 ...1)CC2640R2F平台 ①协议栈版本:CC2640R2 SDK v1.40.00.45 ②编译软件:CCS7.3.0.00019 ③硬件平台:香瓜CC2640R2F开发板 ④仿真器:香瓜XDS100V3下载...

    本文最后修改时间:2017年10月17日 14:24

     

    一、本节简介

    本节以simple_peripheral工程为例,介绍如何用协议栈中的LED。

     

    二、实验平台

    1)CC2640R2F平台

    ①协议栈版本:CC2640R2 SDK v1.40.00.45

    ②编译软件:CCS7.3.0.00019

    ③硬件平台:香瓜CC2640R2F开发板

    ④仿真器:香瓜XDS100V3下载器

     

    三、版权声明

    1)作者:甜甜的大香瓜

    2)声明:喝水不忘挖井人,转载请注明出处。

    3)纠错/业务合作:897503845@qq.com

    4)香瓜BLE之CC2640R2F群:557278427

    5)本文出处:原创连载资料《简单粗暴学蓝牙5》

    6)完整开源资料下载地址(电脑端打开):

    https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i

    7)香瓜CC2640R2F开发板购买链接:

    https://item.taobao.com/item.htm?spm=a1z10.1-c-s.w4023-16963296339.8.21bfc58419sWKt&id=558653143169

     

    8)香瓜XDS100V3下载器购买链接:

    https://item.taobao.com/item.htm?spm=a230r.1.14.1.1d150040zvJBco&id=558356989143&ns=1&abbucket=6#detail

     

    四、实验前提

    1、在进行本文步骤前,请先阅读以下章节:

    1)《简单粗暴学蓝牙5》的“第一章至第四章”章节​。

    2)《PIN.h File Reference》:

    file:///C:/ti/simplelink_cc2640r2_sdk_1_40_00_45/docs/tidrivers/doxygen/html/_p_i_n_8h.html

     

    2、在进行本文步骤前,请先实现以下章节:

    1)《简单粗暴学蓝牙5》的“第三章 软件的安装及使用”章节。

     

    五、基础知识

    暂无

     

    六、硬件原理

    1、原理图

    由上面两图可知,

    名称

    引脚

    控制方法

    LED1

    DIO_25

    高电平亮、低电平灭

    LED2

    DIO_27

    高电平亮、低电平灭

    LED3

    DIO_7

    高电平亮、低电平灭

    LED4

    DIO_0

    高电平亮、低电平灭

    注:SFM16是拨码开关。

    2、开发板对应位置

    需将拨码开关的左1(VCC)、右4(LED1)、右3(LED2)、右2(LED3)、右1(LED4)按键上拨。

     

    七、实验步骤

    1、编写并添加自定义的LED驱动

    1)写一个LED驱动GUA_Led.c(存放在“……\simplelink_cc2640r2_sdk_1_40_00_45\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\simple_peripheral\src\app\GUA”路径下)

    //**********************************************************************
    //name:         GUA_Led.c        
    //introduce:    香瓜自定义的LED驱动   
    //author:       甜甜的大香瓜      
    //email:        897503845@qq.com   
    //QQ group:     香瓜BLE之CC2640R2F(557278427)
    //shop:
    //https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
    //changetime:   2017.10.17
    //**********************************************************************
    #include <string.h>
    #include <stdio.h>
    
    #include <ti/sysbios/knl/Task.h>
    #include <ti/sysbios/knl/Clock.h>
    #include <ti/sysbios/knl/Semaphore.h>
    #include <ti/sysbios/knl/Queue.h>
    
    #include <ti/drivers/PIN.h>
    
    #include "GUA_Led.h"
    
    /*********************宏定义************************/   
    //LEDS
    #define GUA_LED1     PIN_ID(25)
    #define GUA_LED2     PIN_ID(27)
    #define GUA_LED3     PIN_ID(7)
    #define GUA_LED4     PIN_ID(0)
    
    /*********************内部变量************************/  
    static PIN_State  sGUA_LedPins;
    static PIN_Handle sGUA_HledPins = NULL;
    
    //IO配置
    PIN_Config bGUA_LedPinsCfg[] =
    {
        GUA_LED1 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        GUA_LED2 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        GUA_LED3 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        GUA_LED4 | PIN_GPIO_OUTPUT_EN | PIN_GPIO_LOW | PIN_PUSHPULL | PIN_DRVSTR_MAX,
        PIN_TERMINATE
    };
    
    //**********************************************************************
    //name:         GUA_Led_Set
    //introduce:    香瓜点灯驱动
    //parameter:    nGUA_Led_No:GUA_LED_NO_1、GUA_LED_NO_2、GUA_LED_NO_3、
    //              GUA_LED_NO_4、GUA_LED_NO_ALL
    //              nGUA_Mode:GUA_LED_MODE_OFF、GUA_LED_MODE_ON、
    //              GUA_LED_MODE_FLASH、GUA_LED_MODE_TOGGLE
    //return:       none
    //author:       甜甜的大香瓜
    //email:        897503845@qq.com
    //QQ group:     香瓜BLE之CC2640R2F(557278427)
    //shop:
    //https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
    //changetime:   2017.10.17
    //**********************************************************************
    void GUA_Led_Set(GUA_U8 nGUA_Led_No, GUA_U8 nGUA_Mode)
    {
        GUA_U8 nGUA_I = 0;
        GUA_U8 nbGUA_Pin[4] = {GUA_LED1, GUA_LED2, GUA_LED3, GUA_LED4};
    
        //第一次使用时注册IO
        if(NULL == sGUA_HledPins)
        {
            sGUA_HledPins = PIN_open(&sGUA_LedPins, bGUA_LedPinsCfg);
        }
    
        //依次检测4个led是否有执行动作
        for(nGUA_I = 0; nGUA_I <= 3; nGUA_I++)
        {
            if(nGUA_Led_No & (1 << nGUA_I))
            {
                //执行模式
                switch(nGUA_Mode)
                {
                    //关灯模式
                    case GUA_LED_MODE_OFF:
                    {
                        PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 0);
                        break;
                    }
    
                    //开灯模式
                    case GUA_LED_MODE_ON:
                    {
                        PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 1);
                        break;
                    }
    
                    //先亮后灭一次
                    case GUA_LED_MODE_FLASH:
                    {
                        PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 1);
                        Task_sleep(10*1000/Clock_tickPeriod);
                        PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], 0);
                        break;
                    }
    
                    //反转一次
                    case GUA_LED_MODE_TOGGLE:
                    {
                        PIN_setOutputValue(sGUA_HledPins, nbGUA_Pin[nGUA_I], !PIN_getOutputValue(nbGUA_Pin[nGUA_I]));
                        break;
                    }
                }
            }
        }
    }
    

     

    2)写一个LED驱动头文件GUA_Led.h(存放在“……\ble_cc26xx_2_01_00_44423\Projects\ble\SimpleBLEPeripheral\CC26xx\Source\Application\GUA”路径下)

    //**********************************************************************
    //name:         GUA_Led.h        
    //introduce:    香瓜自定义的LED驱动头文件
    //author:       甜甜的大香瓜      
    //email:        897503845@qq.com   
    //QQ group:     香瓜BLE之CC2640R2F(557278427)
    //shop:
    //https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
    //changetime:   2017.09.20
    //**********************************************************************
    #ifndef _GUA_LED_H_
    #define _GUA_LED_H_
    
    /*********************宏定义************************/ 
    //类型宏
    #ifndef GUA_U8
    typedef unsigned char GUA_U8;
    #endif
    
    //LEDS
    #define GUA_LED_NO_1            0x01
    #define GUA_LED_NO_2            0x02
    #define GUA_LED_NO_3            0x04
    #define GUA_LED_NO_4            0x08
    #define GUA_LED_NO_ALL          (GUA_LED_NO_1 | GUA_LED_NO_2 | GUA_LED_NO_3 | GUA_LED_NO_4)
    
    //Modes
    #define GUA_LED_MODE_OFF        0x00
    #define GUA_LED_MODE_ON         0x01
    #define GUA_LED_MODE_FLASH      0x02
    #define GUA_LED_MODE_TOGGLE     0x04
    
    /*********************函数声明************************/ 
    extern void GUA_Led_Set(GUA_U8 nGUA_Led_No, GUA_U8 nGUA_Mode);
    
    #endif
    

      

    3)工程中添加GUA_Led.c和GUA_Led.h

    注:拖拽至CCS工程的Application文件夹下

     

    3、应用层调用
    1)添加头文件(simple_peripheral.c中)

    //GUA  
    #include "GUA_Led.h"  
    //GUA  
    

      

    2)添加测试代码(simple_peripheral.c的SimpleBLEPeripheral_init函数末尾中)

    //GUA  
      //点灯  
      GUA_Led_Set(GUA_LED_NO_1, GUA_LED_MODE_ON);           //LED1 亮  
      GUA_Led_Set(GUA_LED_NO_2, GUA_LED_MODE_ON);           //LED2 亮  
      GUA_Led_Set(GUA_LED_NO_3, GUA_LED_MODE_ON);           //LED3 亮  
      GUA_Led_Set(GUA_LED_NO_4, GUA_LED_MODE_ON);           //LED4 亮  
      GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_OFF);        //LED全灭  
      GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_ON);         //LED全亮  
      GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_TOGGLE);     //LED全反转一次  
      GUA_Led_Set(GUA_LED_NO_ALL, GUA_LED_MODE_FLASH);      //LED全亮灭一次  
    //GUA  
    

      

    八、注意事项
    暂无

    九、实验结果
    用仿真器单步执行,可以发现LED的测试代码实际现象,与香瓜注释相一致。

     

    转载于:https://www.cnblogs.com/opengua/p/7673922.html

    展开全文
  • CC2640R2F BLE5.0 CC2640R2F硬件架构

    千次阅读 2017-08-03 10:59:28
    该SDK基于完整的片上系统(SoC)低功耗蓝牙解决方案SimpleLink CC2640R2FCC2640R2F结合了2.4GHz RF收发器,128KB系统可编程存储器,20KB SRAM以及丰富的外设。它有一个ARM® Cortex®-M3 系列的处理器用来处理应用...
    公司主页 文档归类 淘宝

    硬件架构

    概述

    TI低功耗蓝牙软件开发套件(ble-stack SDK)是开发单模低功耗蓝牙应用的完整软件平台。该SDK基于完整的片上系统(SoC)低功耗蓝牙解决方案SimpleLink CC2640R2F。CC2640R2F结合了2.4GHz RF收发器,128KB系统可编程存储器,20KB SRAM以及丰富的外设。它有一个ARM® Cortex®-M3 系列的处理器用来处理应用程序和蓝牙低功耗协议栈,一个ARM Cortex®-M0 处理器来处理所有底层的无线电控制以及相关的物理层和部分链路层。 传感器控制器模块能够独立于Cortex-M3处理器进行自主数据采集和控制,从而提供了额外的灵活性,进一步扩展了CC2640R2F的低功耗能力。下图显示了模块框图。有关CC2640R2F的更多信息,请参见CC26xx Technical Reference Manual
    图3. SimpleLink CC2640R2F框图

    硬件核心

    如上所示框图,我们不难看出CC2640R2F包含三个物理内核,每个CPU既可独立使用,也可共享RAM/ROM,3个CPU各司其职又协同工作,最大程度实现了性能和功耗平衡。

    ARM Cortex M3(Main CPU)

    系统内核(CM3)是设计用来运行低功耗蓝牙协议栈的链路层到用户应用程序的。链路层通过位于RF门铃上方称为RF驱动器的软件模块连接到无线电内核。RF驱动器在CM3上运行,并在CC2640R2F上作为与无线电的接口,并且还管理无线电硬件和内核的电源域。有关RF驱动程序的文档,请参见TI-RTOS Drivers Reference。RF驱动器上面的就是TI低功耗蓝牙协议栈,它是在库代码中实现的。

    协议栈和应用都工作在改M3和他的128Flash,一定注意区分,我们上面到过App+stack工程管理方式,整个App+Stack都是运行在该CPU上面,而不是错误理解为App工作在M3,Stack协议栈工作在M0。

    ARM Cortex M0(RF Core)

    CC2640R2F内的Cor​​tex M0(CM0)内核负责与无线电硬件相连接以及将来自Cortex M3(CM3)内核的复杂指令转换为可以通过无线电发送的数据。对于低功耗蓝牙协议,CM0实现协议栈的物理层(PHY)。通常,CM0能够自主运行,从而将CM3释放出来处理更高级别的协议和应用层。

    CM3通过一个称为RF门铃的硬件接口与CM0进行通信,这在CC26xx Technical Reference Manual的第23.2节中有说明。

    对于这里的CM0,不提供用户编程,由TI出厂固化好,M3通过寄存器写入命令原语和共享RAM方式实现彼此通信,对于BLE这样的高级协议栈,几乎屏蔽了物理层操作,所以我们几乎不用关心这里的CM0。对于一些基于物理层(CC13x0)的私有协议开发,可能会设计部分。

    SensorController

    功耗优化的16位单片机,具有的2KSRAM,负责一些外设控制、ADC采样、SPI通信等。在系统CPU休眠的时候,SC能够独立工作,这样的设计极大降低了系统CPU唤醒频率,从而减少功耗。

    和Cortex-M0我们不需要关心不同,这的SensorControl我们必须熟悉其原理、开发。我们会将其放在SensorController 章节统一讲解。

    存储系统

    对于存储系统我们必须要以下认识:

    • 基于多个CPU的设计,每个CPU具有自己独立和彼此共享的存储系统。
    • TI保留的128ROM作为出厂固件固化,用以实现部分DriverLib、TI-RTOS、BLE-Stack功能;
    • TI保留8KB的Cache作为预取指缓存,该8KBCache可以配置通过RAM,也就是我们用户可使用的RAM可以从20KB配置到28KB。

    注意:以上存储空间映射图未包含完整功能寄存器和外设,完整存储映射图点击C:/ti/simplelink_cc2640r2_sdk_1_35_00_33/docs/driverlib_cc13xx_cc26xx/cc26x0r2/register_descriptions/CPU_MMAP/CPU_MMAP.html

    熟悉以上存储空间映射图,和各个存储器起始地址对于我们以后把控代码工程至关重要。

    加入我们

    文章所有代码、工具、文档开源。加入我们QQ群 591679055获取更多支持,共同研究CC2640R2F&BLE5.0。

    CC2640R2F&BLE5.0-乐控畅联© Copyright 2017, 成都乐控畅联科技有限公司.

    展开全文
  • TI(德州仪器)最近推出的CC2640R2L是2.4 GHz无线微控制器(MCU),支持低功耗Bluetooth 5.1和...同是德州仪器推出的低功耗无线微控制器CC2640R2F和CC2640R2L,能收发范围更大的射频信号。 信驰达科技基于CC2640...
  • CC2640R2F Evaluation Board功耗测量 简介 蓝牙低耗能标准在开发过程中就考虑到了长电池寿命, 可支持器件依靠单节纽扣电池运行数年。我们假定读者对基本的电气功能概念有所了解, 并了解如何使用示波器和外用表...
  • 本章节,我们试图讲明白CC2640R2F芯片和软件开发架构,帮助大家系统认识CC2640R2F芯片多核心架构、存储系统以及软件开发的工程管理、编译选项、协议栈分层设计。 硬件 多核心架构 一个SOC,三个CPU,我们需要了解其...
  • cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2f-q1(蓝牙模块)cc2640r2...
  • 转载自: ... 一、本节简介 本节以simple_peripheral工程为例,介绍如何添加从机通信状态的显示,如显示“Advertising”、“Connected”等状态。...1)CC2640R2F平台 ①协议栈版本:CC2640R2 SDK v1.40.00...
  • 本节以simple_peripheral工程为例,介绍如何使用任意的IO口作为按键。 注: 香瓜为了方便按键测试,本文使用香瓜CC2640R2F开发板上的5个按键来举例,也可自行更换IO口。
  • CC2640R2F BLE5.0 CC2640R2&BLE5.0开发文档

    千次阅读 2017-08-22 21:16:58
    591679055获取更多支持,共同研究CC2640R2F&BLE5.0。 入门开始 BLE5.0常用问答开发向导CC2640R2开发工具集介绍入门 CC2640R2 BLE 开发环境搭建编译第一个工程(simple_peripheral)运行第一个例
  • CC2640R2F Uart资源

    2018-06-02 23:09:54
    CC2640R2F Uart资源
  • 因项目需求 BLE芯片需要从CC2640更新到CC2640R2F IOS工程师 发现以前的CC2640OAD程序 无法更新CC2640R2F CC2640R2 FFC1发送完 元数据后 ,FFC2还是需要再次发送元数据。而CC2640 FFC1发送完 元数据后,只需要FFC2发送...
  • 德州仪器出品的低功耗无线微控制器CC2640和CC2640R2F,能在更大范围内收发射频信号。CC2640R2F作为CC2640的升级版,在支持协议和内存等方面有了全面提升。 从芯片支持的蓝牙协议栈上看,CC2640和CC2640R2F都支持BLE...
  • cc2640r2f 封装信息.zip

    2020-06-03 10:35:30
    cc2640r2f芯片信息,规格书,有一部分已经翻译成中文,供大家学习使用!
  • https://www.szrfstar.com/news/TI%E6%9C%80%E6%96%B0CC2640R2L%E4%B8%8ECC2640R2F%E5%8C%BA%E5%88%AB%E8%AF%A6%E8%A7%A3-cn.html TI(德州仪器)最近推出的CC2640R2L是2.4 GHz无线微控制器(MCU),支持低功耗...
  • CC2640增加一个具有通知属性的characteristic 介绍 本章使用simple_peripheral作为...simple_peripheral的IAR工程可以在目录C:\ti\simplelink_cc2640r2_sdk_1_35_00_33\examples\rtos\CC2640R2_LAUNCHXL\ble5stack\s...
  • cc2640到cc2640R2F

    千次阅读 2017-01-09 11:43:42
    前言在蓝牙5协议发布之后,nordic率先推出了支持ble5.0协议的芯片nrf52840,配置之强大对于用了多年ti蓝牙芯片的我来说简直令人发指,256k...TI于近期推出了支持ble5.0的芯片cc2640R2F,虽然还是128k的flash,但是ble
  • CC2640R2F PWM

    2019-05-16 18:17:00
    本文在 “cc2640r2f led控制" 基础上修改 以PWM 形式控制 LED 工程创建 略过 一、修改控制引脚配置文件  CC2640R2_LAUNCHXL.h 修改默认配置引脚如下 CC2640R2_LAUNCHXL.c 修改PWM 默认对应引脚值 ...
  • 介绍:SimpleLink™CC2640R2软件开发套件(SDK)提供的组件使工程师能够在Texas Instruments SimpleLinkBluetooth®低能量CC2640R2F无线MCU上开发应用。通过将一些基本软件组件(如蓝牙低功耗(BLE)协议栈,TI-RTOS...
  • CC2640R2F LED控制

    2019-03-15 15:34:00
    本文档记录CC2640R2F simple_peripheral_oad_onchip工程下抽象LED控制接口 硬件平台:官方 LAUNCHXL-CC2640R2F (http://www.ti.com/tool/cn/launchxl-cc2640r2) SDK: simplelink_cc2640r2_sdk_1_50_00_58 ...
  • TI-CC2640R2F规格书

    2018-03-08 10:25:34
    TI-CC2640R2F硬件规格书,超级原厂提供,巨细无比,适合蓝牙开发
  • CC2640R2F 自定义UUID

    2019-03-14 16:37:00
    本文档记录TI CC2640F2R simple_...硬件平台:官方 LAUNCHXL-CC2640R2F (http://www.ti.com/tool/cn/launchxl-cc2640r2) SDK: simplelink_cc2640r2_sdk_1_50_00_58 (http://www.ti.com/tool/download/SIM...
  • XDS200 是最新的 JTAG 系列 TI 处理器调试探针(仿真器)。XDS200 旨在提供良好的性能和最常见的功能,定位于低成本 XDS100 和高性能 XDS560v2 之间,是用于调试 TI 微控制器、处理器和无线器件的均衡型解决方案。...
  • - 使用LAUNCHXL-CC2640R2开发板通过I2C和一个从设备通信;- 使用STM32通过I2C和从设备读写正常,说明从设备本身没有问题;- 使用i2ctmp007中的例程和从设备进行I2C通信正常;问题出在将i2ctmp007中的代码迁移至SDK中...
  • 描述如下: CC2640项目升级需要 替换芯片CC240R2F 安装完SDK后发现官方例程IAR无法编译通过,原因是多个SDK重新配置工程环境 IAR : TOOLS ->...这样设置后,关闭IAR再打开 就能正常编译CC2640R2F。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 558
精华内容 223
关键字:

cc2640r2f