雅特力科技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, 下载次数: 1)
总结:AT32WB415以一颗MCU取代开发蓝牙产品所需诸多组件,在空间紧凑的应用中可以节省一颗蓝牙IC的空间,官方提供的软件入门资料写的也很详尽,方便软件开发。如果能在天线Layout上给出合理的参考(DEMO板板载天线蓝牙信号弱),就能更好的方便使用到项目中。
|