雅特力科技AT32WB415系列, 搭载ARM®Cortex®-M4 为内核,采用低功耗(BLE)蓝牙5.0,集成一款无线通信模块,具有高效能CPU、内存资源及丰富的通讯接口,再集成搭配蓝牙射频(RF)收发器、基带(baseband)功能所组成。处理无线讯号性能,蓝牙接收(RX)灵敏度最大值可达到-97dBm,发射功率(TX)在-20dBm至+4dBm之间。传输距离支持超过30m有效范围传输,连接无死角;在传输速度方面,最快则能达到2 Mbps。
AT32WB415系列无线型MCU,高达150MHz的CPU运算速度与内建数字信号处理器(DSP),并带有**体保护单元(MPU),可避免其中一个任务意外损坏另一个执行中的任务所使用的**体或资源。且最高可支持256KB闪存存储器(Flash)及32KB随机存取存储器(SRAM)。由雅特力自行开发的sLib安全库 (Security Library),可支持密码保护指定范围程序区,方案商烧录核心算法到此区域,提供给下游客户做二次开发,强化产品本身的安全性、可靠性和二次开发的使用便利性。集成MCU丰富的外设,由1组12位8通道ADC、2组比较器、4组UART、1组SPI、1组I2C、1组CAN、与1组高级定时器和7组通用定时器所组成,并可同时满足工业级别操作温度-40°C至+105°C,相较市场上同级产品更增添差异化。AT32WB415系列解决了传统MCU功能分散,以一颗MCU取代开发蓝牙产品所需诸多组件,同时缩小PCB尺寸和降低射频(RF)布局难度,为消费性电子 (consumer electronics)、智能家居 (Smart Home) 、工业物联网 (IIoT) 等多项应用领域提供最佳解决方案。
这颗芯片内部采用串口将两颗处理器连接起来,方便用户使用AT命令即可开发应用
所以,开发分为两块,一块是BLE端对AT命令的解析,一块是M4核应用部分
参照官方AN0077文档应用文档,使用ICP工具将两部分代码烧录进芯片即可完成蓝牙DEMO调试
配合手机端软件可以轻松的在AT命令模式和串口透传模式下进行数据交互
下面演示,我是用增强RTC与蓝牙和手机的交互
通过硬件RTC时钟每秒输出当前时钟
etc配置
/* enable the pwc clock interface */
crm_periph_clock_enable(CRM_PWC_PERIPH_CLOCK, TRUE);
/* allow access to ertc */
pwc_battery_powered_domain_access(TRUE);
/* reset ertc domain */
crm_battery_powered_domain_reset(TRUE);
crm_battery_powered_domain_reset(FALSE);
/* enable the lext osc */
crm_clock_source_enable(CRM_CLOCK_SOURCE_LEXT, TRUE);
/* wait till lext is ready */
while(crm_flag_get(CRM_LEXT_STABLE_FLAG) == RESET)
{
}
/* select the ertc clock source */
crm_ertc_clock_select(CRM_ERTC_CLOCK_LEXT);
/* enable the ertc clock */
crm_ertc_clock_enable(TRUE);
/* deinitializes the ertc registers */
ertc_reset();
/* wait for ertc apb registers update */
ertc_wait_update();
/* configure the ertc divider */
/* ertc second(1hz) = ertc_clk / (div_a + 1) * (div_b + 1) */
ertc_divider_set(127, 255);
/* configure the ertc hour mode */
ertc_hour_mode_set(ERTC_HOUR_MODE_24);
/* set date: 2021-05-01 */
ertc_date_set(21, 5, 1, 5);
/* set time: 12:00:00 */
ertc_time_set(12, 0, 0, ERTC_AM);
rtc时间戳配置
exint_init_type exint_init_struct;
/* configure nvic */
nvic_irq_enable(TAMP_STAMP_IRQn, 0, 0);
/* configure exint */
exint_default_para_init(&exint_init_struct);
exint_init_struct.line_enable = TRUE;
exint_init_struct.line_mode = EXINT_LINE_INTERRUPUT;
exint_init_struct.line_select = EXINT_LINE_21;
exint_init_struct.line_polarity = EXINT_TRIGGER_RISING_EDGE;
exint_init(&exint_init_struct);
/* enable the timestamp */
ertc_timestamp_valid_edge_set(ERTC_TIMESTAMP_EDGE_FALLING);
ertc_timestamp_enable(TRUE);
/* enable the timestamp int */
ertc_interrupt_enable(ERTC_TS_INT, TRUE);
在mcu将蓝牙切换至透传模式时输出时间戳
if(UART_TP_MODE)
{
/* get the current time */
ertc_calendar_get(&time);
if(temp != time.sec)
{
temp = time.sec;
/* display date format : year-month-day */
printf("%02d-%02d-%02d ",time.year, time.month, time.day);
/* display time format : hour:min:sec */
printf("%02d:%02d:%02d\r\n",time.hour, time.min, time.sec);
temptime=sprintf(p_time,"%02d:%02d:%02d\r\n",time.hour, time.min, time.sec);
while(temptime-->0)
{
while(usart_flag_get(USART3, USART_TDBE_FLAG) !=SET);
usart_data_transmit(USART3, *p_time++);
}
}
tp_mode_rx_handler();
tp_mode_tx_handler();
}
这样,进入透传模式后就会在串口和蓝牙接收端得到时间戳了
项目工程:MCU端
wb415_mcu.zip
(526.12 KB)
总结:AT32WB415以一颗MCU取代开发蓝牙产品所需诸多组件,在空间紧凑的应用中可以节省一颗蓝牙IC的空间,官方提供的软件入门资料写的也很详尽,方便软件开发。如果能在天线Layout上给出合理的参考(DEMO板板载天线蓝牙信号弱),就能更好的方便使用到项目中。