[蓝牙芯片]玩转开发板 - 沁恒CH583M开发板(RISC-V)

  由于项目需要,需要使用到CH583M来进行项目开发,对于MounRiver Studio开发环境在之前的文章中已经进行了详细的说明,这里就不再赘述。从沁恒原厂申请了CH583M-R0-1V1的开发板。

一、CH583M资源评估

       资料在官网可以直接进行下载。

二、建立第一个工程文件

       将官网的开发板资料包下载,解压到​D盘的文件夹。

        我们可以看见文件夹的list文件很多,有很多都不是项目需要的文件。在开发的时候,完全可以按照需要进行拷贝,下面就说一下拷贝的过程。

第一步:将项目命名为YT-583(当然这个名字可以根据自己的需要进行命名)

       在文件夹中建立两个空文件夹,命名为BLESRC​文件夹,如上图所示。

        打开资料包中的BLE文件夹,位置在EVT-->EXAM-->BLE​文件夹下。把HAL文件夹和LIB文件夹拷贝到BLE文件夹中

       ​拷贝之后如下图:

        然后将我们需要的文件进行拷贝:

        拷贝之后,更改文件夹的名字为project,同时将文件夹内的工程名字也做相应的更改。

第二步:将资料包的SRC文件拷贝到我们建立的文件夹中。

​        拷贝之后,如下图所示:

第三步:运行项目,找到刚刚我们重新命名的project工程文件双击运行。

        系统会自动弹出开发环境MRS

        如果不习惯英文版本的,可以进行中文版的切换。帮助-->语言-->选择需要的语言,简体中文还是English​

第四步:运行文件

        点击下面的图标,或者直接Shift+F7​

       编译之后,会看见​0个错误0个警告。

       至此,最简单的例子程序就建立完成了。

三、名称的更改

       找到peripheral.c文件,我们将下面标红的地方进行更改,0x12代表的是后面字符的长度,记得里面的GAP_​ADTYPE...也算一个字符。

       更改为YT-CH583M,不能忘记更改len

四、需要修改几个文件中的内容

       在下面的函数中

uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)

       按照原有的格式添加任务。

       首先在文件中增加以下代码

//peripheral.H#define SBP_START_DEVICE_EVT    0x0001#define SBP_PERIODIC_EVT        0x0002#define SBP_READ_RSSI_EVT       0x0004#define SBP_PARAM_UPDATE_EVT    0x0008#define SBP_PHY_UPDATE_EVT      0x0010​#define YT_TEST_EVT             0x0020

        然后在刚刚提到的函数中增加以下代码

//peripheral.c//构建ble uart service callback handler函数void on_bleuartServiceEvt(uint16_t connection_handle,ble_uart_evt_t  *p_evt)//函数void Peripheral_Init()中添加服务ble_uart_add_service(on_bleuartServiceEvt);//函数uint16_t Peripheral_ProcessEvent(uint8_t task_id, uint16_t events)中添加事件if(events & YT_TEST_EVT){        uint8_t send_result = SUCCESS;        uint16_t cuntest = 0;        noti.len = 6;        noti.pValue = GATT_bm_alloc(peripheralConnList.connHandle, ATT_HANDLE_VALUE_NOTI, noti.len, NULL, 0 );        noti.pValue[0]='L';        noti.pValue[1]='L';        noti.pValue[2]='S';        noti.pValue[3]='D';        noti.pValue[4]='J';        noti.pValue[5]=' ';        if(noti.pValue != NULL)        {​            send_result = simpleProfile_Notify( peripheralConnList.connHandle, &noti);            if(send_result==SUCCESS)            {                tmos_start_task( Peripheral_TaskID, YT_TEST_EVT,1600);            }​            else            {                tmos_stop_task( Peripheral_TaskID, YT_TEST_EVT);                GATT_bm_free( (gattMsg_t *)&noti, ATT_HANDLE_VALUE_NOTI );            }​        }        return (events ^ YT_TEST_EVT);​    }

       gattprofile.c文件中构建以下几个函数,具体的函数内容,可以参考沁恒的手册进行构建。

//gattprofile.Cstatic bStatus_t ble_uart_ReadAttrCB( uint16 connHandle, gattAttribute_t *pAttr,                                     uint8 *pValue, uint16 *pLen, uint16 offset, uint16 maxLen,uint8 method )static bStatus_t ble_uart_WriteAttrCB( uint16 connHandle, gattAttribute_t *pAttr,                                      uint8 *pValue, uint16 len, uint16 offset,uint8 method )static void ble_uart_HandleConnStatusCB ( uint16 connHandle, uint8 changeType )bStatus_t ble_uart_add_service( ble_uart_ProfileChangeCB_t cb)bStatus_t ble_uart_notify( uint16 connHandle, attHandleValueNoti_t *pNoti, uint8 taskId )

五、下载设置

       点击闪存-->下载配置,然后根据自己的需要进行勾选,选择操作。

​        连接好仿真器和开发板。

       ​进行程序下载。

六、查看结果

        我们打开沁恒的windows软件WCHBleDemo​

       点击刷新设备,然后选中YT-CH583M打开设备。

       点击获取服务,选择FFF0,点击获取特征,选择FFF1,点击获取操作,订阅。就可以在接收区看见LLSDJ在不断传输。

结:

        沁恒的​芯片还是很好用的,协议栈也不是很复杂,移植也很方便。
---------------------
作者:单片小菜
链接:https://bbs.21ic.com/icview-3287932-1-1.html
来源:21ic.com
此文章已获得原创/原创奖标签,著作权归21ic所有,任何人未经允许禁止转载。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值