AnDawn 发表于 2022-1-21 22:12

【BG22-EK4108A 蓝牙开发套件】 一 、测试蓝牙信号强度+数据上下传

本帖最后由 AnDawn 于 2022-1-21 22:12 编辑

<p>今天测试的主角是ch5852m和BG22-EK4108A</p>

<p>&nbsp;</p>

<p>首先测试ch582m</p>

<h4>产品特点</h4>

<ul>
        <li>32位RISC处理器WCH RISC-V4A</li>
        <li>支持RV32IMAC指令集,支持硬件乘法和除法</li>
        <li>32KB SRAM,1MB Flash,支持ICP、ISP和IAP,支持OTA无线升级</li>
        <li>内置2.4GHz RF收发器和基带及链路控制,支持BLE5.3</li>
        <li>支持2Mbps、1Mbps、500Kbps、125Kbps</li>
        <li>接收灵敏度-98dBm,可编程+7dBm发送功率</li>
        <li>提供协议栈和应用层API</li>
        <li>内置温度传感器</li>
        <li>内置RTC,支持定时和触发两种模式</li>
        <li>提供2组USB2.0 全速Host/Device</li>
        <li>提供14通道触摸按键</li>
        <li>提供14通道12位ADC</li>
        <li>提供4组UART,2组SPI,12路PWM,1路IIC</li>
        <li>40个GPIO,其中4个支持5V信号输入</li>
        <li>最低支持1.7V电源电压</li>
        <li>内置AES-128加解密单元,芯片唯一ID</li>
        <li>封装:QFN48</li>
</ul>

<p></p>

<p>把ch582m设置为广播模式</p>

<p>以下代码<br />
#include &quot;CH58x_common.h&quot;<br />
#include &quot;HAL.h&quot;</p>

<p>tmosTaskID halTaskID;</p>

<p>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lib_Calibration_LSI<br />
&nbsp;*<br />
&nbsp;* <a href="home.php?mod=space&amp;uid=159083" target="_blank">@brief</a> &nbsp; &nbsp; &nbsp; 内部32k校准<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* <a href="home.php?mod=space&amp;uid=784970" target="_blank">@return</a> &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
void Lib_Calibration_LSI( void )<br />
{<br />
&nbsp; Calibration_LSI( Level_64 );<br />
}</p>

<p>#if (defined (BLE_SNV)) &amp;&amp; (BLE_SNV == TRUE)<br />
/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lib_Read_Flash<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; Lib 操作Flash回调<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; addr.<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; num.<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; pBuf.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
u32 Lib_Read_Flash( u32 addr, u32 num, u32 *pBuf )<br />
{<br />
&nbsp; EEPROM_READ( addr, pBuf, num * 4 );<br />
&nbsp; return 0;<br />
}</p>

<p>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Lib_Write_Flash<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; Lib 操作Flash回调<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; addr.<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; num.<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; pBuf.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
u32 Lib_Write_Flash( u32 addr, u32 num, u32 *pBuf )<br />
{<br />
&nbsp; EEPROM_ERASE( addr, EEPROM_PAGE_SIZE*2 );<br />
&nbsp; EEPROM_WRITE( addr, pBuf, num * 4 );<br />
&nbsp; return 0;<br />
}<br />
#endif</p>

<p>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;CH57X_BLEInit<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; BLE 库初始化<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
void CH57X_BLEInit( void )<br />
{<br />
&nbsp; uint8 i;<br />
&nbsp; bleConfig_t cfg;<br />
&nbsp; if ( tmos_memcmp( VER_LIB, VER_FILE, strlen( VER_FILE ) &nbsp;) == FALSE )<br />
&nbsp; {<br />
&nbsp; &nbsp; PRINT( &quot;head file error...\n&quot; );<br />
&nbsp; &nbsp; while( 1 )<br />
&nbsp; &nbsp; &nbsp; ;<br />
&nbsp; }<br />
&nbsp; SysTick_Config( SysTick_LOAD_RELOAD_Msk );<br />
&nbsp; PFIC_DisableIRQ( SysTick_IRQn );</p>

<p>&nbsp; tmos_memset( &amp;cfg, 0, sizeof(bleConfig_t) );<br />
&nbsp; cfg.MEMAddr = ( u32 ) MEM_BUF;<br />
&nbsp; cfg.MEMLen = ( u32 ) BLE_MEMHEAP_SIZE;<br />
&nbsp; cfg.BufMaxLen = ( u32 ) BLE_BUFF_MAX_LEN;<br />
&nbsp; cfg.BufNumber = ( u32 ) BLE_BUFF_NUM;<br />
&nbsp; cfg.TxNumEvent = ( u32 ) BLE_TX_NUM_EVENT;<br />
&nbsp; cfg.TxPower = ( u32 ) BLE_TX_POWER;<br />
#if (defined (BLE_SNV)) &amp;&amp; (BLE_SNV == TRUE)<br />
&nbsp; FLASH_ROM_LOCK( 0 ); &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;// 解锁flash<br />
&nbsp; cfg.SNVAddr = ( u32 ) BLE_SNV_ADDR;<br />
&nbsp; cfg.readFlashCB = Lib_Read_Flash;<br />
&nbsp; cfg.writeFlashCB = Lib_Write_Flash;<br />
#endif<br />
#if( CLK_OSC32K )&nbsp;&nbsp; &nbsp;<br />
&nbsp; cfg.SelRTCClock = ( u32 ) CLK_OSC32K;<br />
#endif<br />
&nbsp; cfg.ConnectNumber = ( PERIPHERAL_MAX_CONNECTION &amp; 3 ) | ( CENTRAL_MAX_CONNECTION &lt;&lt; 2 );<br />
&nbsp; cfg.srandCB = SYS_GetSysTickCnt;<br />
#if (defined TEM_SAMPLE) &nbsp;&amp;&amp; (TEM_SAMPLE == TRUE)<br />
&nbsp; cfg.tsCB = HAL_GetInterTempValue; &nbsp; &nbsp;// 根据温度变化校准RF和内部RC( 大于7摄氏度 )<br />
#if( CLK_OSC32K )<br />
&nbsp; cfg.rcCB = Lib_Calibration_LSI; &nbsp; &nbsp;// 内部32K时钟校准<br />
#endif<br />
#endif<br />
#if (defined (HAL_SLEEP)) &amp;&amp; (HAL_SLEEP == TRUE)<br />
&nbsp; cfg.WakeUpTime = WAKE_UP_RTC_MAX_TIME;<br />
&nbsp; cfg.sleepCB = CH58X_LowPower; &nbsp; &nbsp;// 启用睡眠<br />
#endif<br />
#if (defined (BLE_MAC)) &amp;&amp; (BLE_MAC == TRUE)<br />
&nbsp; for ( i = 0; i &lt; 6; i++ )<br />
&nbsp; &nbsp; cfg.MacAddr<i> = MacAddr;<br />
#else<br />
&nbsp; {<br />
&nbsp; &nbsp; uint8 MacAddr;<br />
&nbsp; &nbsp; GetMACAddress( MacAddr );<br />
&nbsp; &nbsp; for(i=0;i&lt;6;i++) cfg.MacAddr<i> = MacAddr<i>; &nbsp; &nbsp;// 使用芯片mac地址<br />
&nbsp; }<br />
#endif<br />
&nbsp; if ( !cfg.MEMAddr || cfg.MEMLen &lt; 4 * 1024 )<br />
&nbsp; &nbsp; while( 1 )<br />
&nbsp; &nbsp; &nbsp; ;<br />
&nbsp; i = BLE_LibInit( &amp;cfg );<br />
&nbsp; if ( i )<br />
&nbsp; {<br />
&nbsp; &nbsp; PRINT( &quot;LIB init error code: %x ...\n&quot;, i );<br />
&nbsp; &nbsp; while( 1 )<br />
&nbsp; &nbsp; &nbsp; ;<br />
&nbsp; }<br />
}</i></i></i></p>

<p><i><i><i>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HAL_ProcessEvent<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; 硬件层事务处理<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; task_id.<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; events.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; events.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
tmosEvents HAL_ProcessEvent( tmosTaskID task_id, tmosEvents events )<br />
{<br />
&nbsp; uint8 * msgPtr;</i></i></i></p>

<p><i><i><i>&nbsp; if ( events &amp; SYS_EVENT_MSG )<br />
&nbsp; { &nbsp; &nbsp;// 处理HAL层消息,调用tmos_msg_receive读取消息,处理完成后删除消息。<br />
&nbsp; &nbsp; msgPtr = tmos_msg_receive( task_id );<br />
&nbsp; &nbsp; if ( msgPtr )<br />
&nbsp; &nbsp; {<br />
&nbsp; &nbsp; &nbsp; /* De-allocate */<br />
&nbsp; &nbsp; &nbsp; tmos_msg_deallocate( msgPtr );<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; return events ^ SYS_EVENT_MSG;<br />
&nbsp; }<br />
&nbsp; if ( events &amp; LED_BLINK_EVENT )<br />
&nbsp; {<br />
#if (defined HAL_LED) &amp;&amp; (HAL_LED == TRUE)<br />
&nbsp; &nbsp; HalLedUpdate( );<br />
#endif // HAL_LED<br />
&nbsp; &nbsp; return events ^ LED_BLINK_EVENT;<br />
&nbsp; }<br />
&nbsp; if ( events &amp; HAL_KEY_EVENT )<br />
&nbsp; {<br />
#if (defined HAL_KEY) &amp;&amp; (HAL_KEY == TRUE)<br />
&nbsp; &nbsp; HAL_KeyPoll(); /* Check for keys */<br />
&nbsp; &nbsp; tmos_start_task( halTaskID, HAL_KEY_EVENT, MS1_TO_SYSTEM_TIME(100) );<br />
&nbsp; &nbsp; return events ^ HAL_KEY_EVENT;<br />
#endif<br />
&nbsp; }<br />
&nbsp; if ( events &amp; HAL_REG_INIT_EVENT )<br />
&nbsp; {<br />
#if (defined BLE_CALIBRATION_ENABLE) &amp;&amp; (BLE_CALIBRATION_ENABLE == TRUE)&nbsp;&nbsp; &nbsp;// 校准任务,单次校准耗时小于10ms<br />
&nbsp; &nbsp; BLE_RegInit(); &nbsp; &nbsp;// 校准RF<br />
#if( CLK_OSC32K )&nbsp;&nbsp; &nbsp;<br />
&nbsp; &nbsp; Lib_Calibration_LSI(); &nbsp; &nbsp;// 校准内部RC<br />
#endif<br />
&nbsp; &nbsp; tmos_start_task( halTaskID, HAL_REG_INIT_EVENT, MS1_TO_SYSTEM_TIME( BLE_CALIBRATION_PERIOD ) );<br />
&nbsp; &nbsp; return events ^ HAL_REG_INIT_EVENT;<br />
#endif<br />
&nbsp; }<br />
&nbsp; if ( events &amp; HAL_TEST_EVENT )<br />
&nbsp; {<br />
&nbsp; &nbsp; PRINT( &quot;*\n&quot; );<br />
&nbsp; &nbsp; tmos_start_task( halTaskID, HAL_TEST_EVENT, MS1_TO_SYSTEM_TIME( 1000 ) );<br />
&nbsp; &nbsp; return events ^ HAL_TEST_EVENT;<br />
&nbsp; }<br />
&nbsp; return 0;<br />
}</i></i></i></p>

<p><i><i><i>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HAL_Init<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; 硬件初始化<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
void HAL_Init()<br />
{<br />
&nbsp; halTaskID = TMOS_ProcessEventRegister( HAL_ProcessEvent );<br />
&nbsp; HAL_TimeInit();<br />
#if (defined HAL_SLEEP) &amp;&amp; (HAL_SLEEP == TRUE)<br />
&nbsp; HAL_SleepInit();<br />
#endif<br />
#if (defined HAL_LED) &amp;&amp; (HAL_LED == TRUE)<br />
&nbsp; HAL_LedInit( );<br />
#endif<br />
#if (defined HAL_KEY) &amp;&amp; (HAL_KEY == TRUE)<br />
&nbsp; HAL_KeyInit( );<br />
#endif<br />
#if ( defined BLE_CALIBRATION_ENABLE ) &amp;&amp; ( BLE_CALIBRATION_ENABLE == TRUE )<br />
&nbsp; tmos_start_task( halTaskID, HAL_REG_INIT_EVENT, MS1_TO_SYSTEM_TIME( BLE_CALIBRATION_PERIOD ) ); &nbsp; &nbsp;// 添加校准任务,单次校准耗时小于10ms<br />
#endif<br />
// &nbsp;tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 ); &nbsp; &nbsp;// 添加一个测试任务<br />
}</i></i></i></p>

<p><i><i><i>/*******************************************************************************<br />
&nbsp;* @fn &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;HAL_GetInterTempValue<br />
&nbsp;*<br />
&nbsp;* @brief &nbsp; &nbsp; &nbsp; 如果使用了ADC中断采样,需在此函数中暂时屏蔽中断.<br />
&nbsp;*<br />
&nbsp;* input parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* output parameters<br />
&nbsp;*<br />
&nbsp;* @param &nbsp; &nbsp; &nbsp; None.<br />
&nbsp;*<br />
&nbsp;* @return &nbsp; &nbsp; &nbsp;None.<br />
&nbsp;*/<br />
uint16 HAL_GetInterTempValue( void )<br />
{<br />
&nbsp; uint8 sensor, channel, config, tkey_cfg;<br />
&nbsp; uint16 adc_data;<br />
&nbsp;&nbsp;<br />
&nbsp; tkey_cfg = R8_TKEY_CFG;<br />
&nbsp; sensor = R8_TEM_SENSOR;<br />
&nbsp; channel = R8_ADC_CHANNEL;<br />
&nbsp; config = R8_ADC_CFG;<br />
&nbsp; ADC_InterTSSampInit();<br />
&nbsp; R8_ADC_CONVERT |= RB_ADC_START;<br />
&nbsp; while( R8_ADC_CONVERT &amp; RB_ADC_START )<br />
&nbsp; &nbsp; ;<br />
&nbsp; adc_data = R16_ADC_DATA;<br />
&nbsp; R8_TEM_SENSOR = sensor;<br />
&nbsp; R8_ADC_CHANNEL = channel;<br />
&nbsp; R8_ADC_CFG = config;<br />
&nbsp; R8_TKEY_CFG = tkey_cfg;<br />
&nbsp; return ( adc_data );<br />
}</i></i></i></p>

<p><i><i><i>测得最强信号强度30dB左右</i></i></i></p>

<p><i><i><i>由于空间有限15米左右测得结果93dB左右</i></i></i></p>

<p><i><i><i>测得结果比较满意</i></i></i></p>

<p><i><i><i>&nbsp;</i></i></i></p>

<p>,下面测试BG22-EK4108A</p>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">BG22资源管理器工具包中包含了以下关键的硬件元素: </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">EFR32BG22无线壁虎SoC,76.8MHz工作频率,512kBkB闪存,32kBRAM </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">2.4GHz匹配网络和陶瓷天线 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">一个LED和一个按钮 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">车载SEGGERJ-Link调试器,便于编程和调试,其中包括一个USB虚拟COM端口和数据包跟踪接口(PTI) </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">MikroBUS插槽,用于连接点击板&trade;和其他MikroBUS附加板 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">用于连接Qwiic连接系统硬件的Qwiic连接器 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">用于GPIO访问和连接到外部硬件的接线板 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">SubReset按钮 </span></span></span></div>

<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">翻译成中文大概是这么个意思</span></span></span></div>

<div>
<div><span style="font-size:9pt"><span style="font-family:宋体"><span style="color:#000000">套件的核心是EFR32BG22</span></span></span></div>

<div><i><i><i></i></i></i></div>

<div>&nbsp;</div>

<div>&nbsp;</div>

<div>&nbsp;</div>

<div>
<p><i><i><i>/***************************************************************************//**<br />
&nbsp;* @file<br />
&nbsp;* @brief main() function.<br />
&nbsp;*******************************************************************************<br />
&nbsp;* # License<br />
&nbsp;* &lt;b&gt;Copyright 2020 Silicon Laboratories Inc. www.silabs.com&lt;/b&gt;<br />
&nbsp;*******************************************************************************<br />
&nbsp;*<br />
&nbsp;* SPDX-License-Identifier: Zlib<br />
&nbsp;*<br />
&nbsp;* The licensor of this software is Silicon Laboratories Inc.<br />
&nbsp;*<br />
&nbsp;* This software is provided &#39;as-is&#39;, without any express or implied<br />
&nbsp;* warranty. In no event will the authors be held liable for any damages<br />
&nbsp;* arising from the use of this software.<br />
&nbsp;*<br />
&nbsp;* Permission is granted to anyone to use this software for any purpose,<br />
&nbsp;* including commercial applications, and to alter it and redistribute it<br />
&nbsp;* freely, subject to the following restrictions:<br />
&nbsp;*<br />
&nbsp;* 1. The origin of this software must not be misrepresented; you must not<br />
&nbsp;* &nbsp; &nbsp;claim that you wrote the original software. If you use this software<br />
&nbsp;* &nbsp; &nbsp;in a product, an acknowledgment in the product documentation would be<br />
&nbsp;* &nbsp; &nbsp;appreciated but is not required.<br />
&nbsp;* 2. Altered source versions must be plainly marked as such, and must not be<br />
&nbsp;* &nbsp; &nbsp;misrepresented as being the original software.<br />
&nbsp;* 3. This notice may not be removed or altered from any source distribution.<br />
&nbsp;*<br />
&nbsp;******************************************************************************/<br />
#include &quot;sl_component_catalog.h&quot;<br />
#include &quot;sl_system_init.h&quot;<br />
#include &quot;app.h&quot;<br />
#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)<br />
#include &quot;sl_power_manager.h&quot;<br />
#endif // SL_CATALOG_POWER_MANAGER_PRESENT<br />
#if defined(SL_CATALOG_KERNEL_PRESENT)<br />
#include &quot;sl_system_kernel.h&quot;<br />
#else // SL_CATALOG_KERNEL_PRESENT<br />
#include &quot;sl_system_process_action.h&quot;<br />
#endif // SL_CATALOG_KERNEL_PRESENT</i></i></i></p>

<p><i><i><i>int main(void)<br />
{<br />
&nbsp; // Initialize Silicon Labs device, system, service(s) and protocol stack(s).<br />
&nbsp; // Note that if the kernel is present, processing task(s) will be created by<br />
&nbsp; // this call.<br />
&nbsp; sl_system_init();</i></i></i></p>

<p><i><i><i>&nbsp; // Initialize the application. For example, create periodic timer(s) or<br />
&nbsp; // task(s) if the kernel is present.<br />
&nbsp; app_init();</i></i></i></p>

<p><i><i><i>#if defined(SL_CATALOG_KERNEL_PRESENT)<br />
&nbsp; // Start the kernel. Task(s) created in app_init() will start running.<br />
&nbsp; sl_system_kernel_start();<br />
#else // SL_CATALOG_KERNEL_PRESENT<br />
&nbsp; while (1) {<br />
&nbsp; &nbsp; // Do not remove this call: Silicon Labs components process action routine<br />
&nbsp; &nbsp; // must be called from the super loop.<br />
&nbsp; &nbsp; sl_system_process_action();</i></i></i></p>

<p><i><i><i>&nbsp; &nbsp; // Application process.<br />
&nbsp; &nbsp; app_process_action();</i></i></i></p>

<p><i><i><i>#if defined(SL_CATALOG_POWER_MANAGER_PRESENT)<br />
&nbsp; &nbsp; // Let the CPU go to sleep if the system allows it.<br />
&nbsp; &nbsp; sl_power_manager_sleep();<br />
#endif<br />
&nbsp; }<br />
#endif // SL_CATALOG_KERNEL_PRESENT<br />
}</i></i></i><br />
</p>

<p>不会排序,图是错的4312这个是顺序</p>

<p>&nbsp;</p>

<p>某平台价格,</p>

<p>数据上下传下篇文章吧,582m做主机bg22做从机读取数据</p>
</div>
</div>

lugl4313820 发表于 2022-3-4 15:44

<p>CH582的后续文章出来了吗,我想向你学习。</p>
页: [1]
查看完整版本: 【BG22-EK4108A 蓝牙开发套件】 一 、测试蓝牙信号强度+数据上下传