This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/LAUNCHXL-CC2640R2:使用 BLE5将传感器标签驱动程序移植到 CC2640R2

Guru**** 2587365 points
Other Parts Discussed in Thread: BLE-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/598581/ccs-launchxl-cc2640r2-porting-sensor-tag-driver-to-cc2640r2-using-ble5

器件型号:LAUNCHXL-CC2640R2
Thread 中讨论的其他器件:SYSBIOSBLE-STACK

工具/软件:Code Composer Studio

大家好、

我将 CC2640R2 Launchpad 与定制板和传感器搭配使用、并尝试将基于简单 BLE 外设和传感器标签从 BLE 2.2.1到 BLE5的项目移植到 BLE5。 我按照从 BLE 2.2.1到3.0.0以及从 BLE 3.0.0到 BLE5 1.0.0的移植指南进行了操作、但我无法移植存在于板文件夹下传感器标签开发项目中的 bsp_i2c 文件。 我不知道如何更改 Semaphore_post、Semaphore_pend 等、因为参数数量需要更改。

是否有人已经完成了传感器标签移植、以便与 CC2640R2 Launchpad 配合使用或知道修改 bsp_i2c 文件的方法?

感谢你的帮助。

SEB

下面是 bsp_i2c.c 文件的一部分:

/*********
*文件名:bsp_i2c.c
*已修订:$Date:$
*修订版:$Revision:$
*
*说明:在 RTOS 驱动程序之上添加了向后的层
*与非 RTOS I2C 驱动程序的兼容性。
*用于简化 i2C.h 和 i2c/I2CCC26XX.h 中的函数
*
*
秘书长的报告 /


/*********
*包括
*
#include
#include
#include
#include
#include
#include

#include

#include "Board.h"
#include "sensor.h"

#include "bsp_i2c.h"

/*********
*常量
*
#define I2C_TIMEOUT 2500


/*********
*全局变量
*
extern I2CCC26XX_HWAttrs i2cCC26xxHWAttrs[];

/*********
*局部变量
*
静态易失性 uint8_t slaveAddr;
静态易失性 uint8_t 接口;
静态 I2C_Handle i2cHandle;
静态 I2C_Params i2cParams;
静态信号量结构互斥量;
静态常量 I2CCC26XX_I2CPinCfg pinCfg0 =

// I2C 接口0的引脚配置
.pinSDA = Board_I2C0_SDA0、
.pinSCL = Board_I2C0_SCL0
};




/*********
*@fn bspI2cSelect
*
*@简短选择 I2C 接口和从器件
*
*@param newInterface -所选接口
*@param address -从器件地址
*
*@如果成功则返回 true
*
bool bspI2cSelect (uint8_t newInterface、uint8_t 地址)

//获取 I2C 资源
if (!Semaphore_pend (Semaphore_handle (&mutex)、MS_2_ticks (I2C_TIMEOUT))))

返回 false;

//存储新的从地址
slaveAddr =地址;

//接口已更改?
if (newInterface!=接口)

//存储新接口
接口= newInterface;

//关闭 RTOS 驱动程序
I2C_Close (i2cHandle);

//将定制设置为 NULL,选择 I2C 接口0
I2C_Params_init (&i2cParams);

//根据所选的 I2C 接口0分配 I2C 数据/时钟引脚//接口为1
IF (接口= BSP_I2C_interface_0)

i2cParams.custom=(void*).pinCfg0;

//重新打开具有新总线引脚分配的 RTOS 驱动程序
i2cHandle = I2C_open (Board_I2C、&i2cParams);

返回 true;

/*********
*@fn bspI2cDeselect
*
*@brief 允许其他任务访问 I2C 驱动程序
*
*@param none
*
*@返回无
*
void bspI2cDeselect (void)

//释放 I2C 资源
Semaphore_post (Semaphore_handle (&mutex));


/*********
*@fn bspI2cInit
*
*@简要初始化 RTOS I2C 驱动程序(只能调用一次)
*
*@param none
*
*@返回无
*
void bspI2cInit (void)

#define I2C_initialized
Semaphore_Params semParamsMutex;

//创建保护信标
Semaphore_Params_init (&semParamsMutex);
SemParametersMutex.mode = Semaphore_Mode_binary;
Semaphore_construction (&mutex、1、&semParamsMutex);

//重置 I2C 控制器
HapiResetPeripheral (PRCM_Periph_I2C0);

I2C_init();
I2C_Params_init (&i2cParams);
i2cParams.bitrate = I2C_400kHz;
i2cHandle = I2C_open (Board_I2C、&i2cParams);

//初始化局部变量
slaveAddr = 0xFF;
接口= BSP_I2C_interface_0;

if (i2cHandle ==空)

Task_exit();

/*********
*@fn bspI2cReset
*
*@简要重置 RTOS I2C 驱动程序
*
*@param none
*
*@返回无
*
void bspI2cReset (void)(空)

//获取 I2C 资源*/
if (!Semaphore_pend (Semaphore_handle (&mutex)、MS_2_ticks (I2C_TIMEOUT))))

返回;

//关闭驱动程序
I2C_Close (i2cHandle);

//重置 I2C 控制器
HapiResetPeripheral (PRCM_Periph_I2C0);

//重置局部变量
slaveAddr = 0xFF;
接口= BSP_I2C_interface_0;

//打开驱动程序
i2cHandle = I2C_open (Board_I2C、&i2cParams);

//释放 I2C 资源
Semaphore_post (Semaphore_handle (&mutex));

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Sebastien、

    你不必替换这里的信标-我相信你可以保持它们不变。 如果您的任务希望与 BLE-Stack 通信、则只需更改以使用 TI RTOS 事件模块。 否则、您可以随意使用信标!

    我尚未尝试将 sensortag 移植到 ble5-stack、请继续更新!

    此致、
    反叛分子
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的快速回复。

    为了移植我的项目、我从 CCS 提供的简单 BLE 外设示例开始、我添加了传感器标签示例中的所有驱动程序、板级文件和修改后的应用。 CC2640R2正在按应有的方式进行广播、直到我在 simpleBLEPeripheral_init ()函数中为 bsp_i2c (bspI2cInit())驱动程序和 SensorTaginit()进行初始化。

    此外,我已经完成了不同的测试,当我将这些行放在 main.c 文件中时,项目将停止工作:

    SensorTagTmp_createTask();
    SensorTagHum_createTask();
    SensorTagBar_createTask();

    您有什么想法吗?
    谢谢

    编辑:我发现了 bsp_init()和 SensorTag_init()的错误,缺少引脚定义。 当我添加: SensorTagTmp_createTask();SensorTagHum_createTask();和 SensorTagBar_createTask();