本帖最后由 yangjiaxu 于 2021-12-20 16:49 编辑
国民技术,是中国安全芯片、通用MCU领军企业和国家级**技术企业,之前好像用过国密的身份*读卡器,也不知道这俩是不是一家,哈哈哈,不过近几年国产芯片崛起,真的给我很大的感触,国家终于可以与国外的科技抗衡了。
这两年芯片缺的很,之前用ST,后来用航顺,中科芯,依次缺货,再后来选择了GD和华大,也是货源紧张,然后我听说国民技术也有MCU,而且性价比还很高,所以一直有所关注,不负有心人,国民来21ic了,欢迎~~~,之前有幸参加21ic和国民举办的活动,获得了一块开发板,不错,终于可以和国民技术近距离的了解了,今天收到板子了,紧忙开箱瞅一瞅。
盒子很大气,上面印着国民技术,打开是一块开发板和一条数据线,该说不说,这条数据线一点儿用都没有,蓝牙板的接口是Type-C,发的却是miniUSB,不过发了咱就收着,我想国民也不能往回要了吧,哈哈哈哈;接下来咱们看看开发板。
蓝色开发板,有品位,看板子布局,可以看出中规中矩,MCU是支持蓝牙5.1的,采用QFN封装,外围电路看着还算是简洁,元件不是很多,以后设备小型化应该不是问题,天线采用2种制式,一种是IPEX外接出来,一种是板载PCB的天线,都可以,官方默认用的板载PCB方式,中间有一些短路帽,这些短路帽是仿真器与N32WB03X连接的,方便工程师可以快速调试。 板载4个轻触按键,一个复位,一个唤醒,2个用户按键,两个LED指示灯,右侧LQFP封装的是板载仿真器 ,采用的是CMSIS-DAP开源协议,速度很快,非常给力。本板的主要是接口用了Type-C,非常得意这个接口,五星好评。
接下来是环境搭建,我看官方支持keil,好嘛,这不栽我手里了嘛,keil的话就需要安装pack支持包,官方也提供了,双击一路next就可以。在官方提供的资料之中,选择第5项。 打开一个蓝牙例程,然后在通过快速指南进行快速学习。很快就能上手了。接下来我做了个小小的项目,通过\5-软件开发套件(Software Development Kit)\N32WB03x_SDK V1.0.0\projects\n32wb03x_EVAL\ble\rtdss 例程,开启本帖的精彩之处。
首先打开文档,UG_N32WB03x 数传例程指南V1.0.pdf,看看蓝牙函数的功能和结构。知道收到数据的函数是app_usart_tx_fifo_enter;
接下来是工程,使用keil打开即可,看了一下程序结构,OK,没什么问题,主要是我们需要获取蓝牙收到的数据,然后通过程序解析实现对LED的控制。
主要修改代码如下:
uint8_t app_usart_tx_fifo_enter(const uint8_t *p_data, uint16_t len)
{
uint32_t in_len, out_temp;
//store data in fifo
NS_LOG_DEBUG("%d,%d,%d\r\n",len,usart_tx_fifo_in,usart_tx_fifo_out);
out_temp = usart_tx_fifo_out;
if(p_data[0] == 0)
{
LedOn(LED1_PORT,LED1_PIN);
}
else if(p_data[0] == 1)
LedOff(LED1_PORT,LED1_PIN);
while(len)
{
if(usart_tx_fifo_in >= out_temp )
{
in_len = USART_TX_FIFO_SIZE-usart_tx_fifo_in;
if(in_len > len)
{
in_len = len;
}
memcpy(&usart_tx_fifo_buf[usart_tx_fifo_in],p_data,in_len);
len = len-in_len;
p_data += in_len;
usart_tx_fifo_in = (usart_tx_fifo_in + in_len)%USART_TX_FIFO_SIZE;
}
else if(usart_tx_fifo_in < out_temp )
{
in_len = out_temp-usart_tx_fifo_in-1;
if(in_len > len)
{
in_len = len;
}
memcpy(&usart_tx_fifo_buf[usart_tx_fifo_in],p_data,in_len);
len = len-in_len;
usart_tx_fifo_in = (usart_tx_fifo_in + in_len)%USART_TX_FIFO_SIZE;
//fifo full,drop the rest data
if(len)
{
NS_LOG_WARNING("F:%d,%d,%d\r\n",len,usart_tx_fifo_in,out_temp);
}
break;
}
}
// ble treaming cut timer, active usart send after it.
ke_timer_set(APP_CUSTS_TEST_EVT, TASK_APP, 50);
// if(!usart_sending)
// {
// app_usart_tx_process();
// }
return len;
}
修改完成之后,编译成功,下载到开发板之中。之后,通过手机随便下载的蓝牙调试助手,我习惯使用“蓝牙调试器”,在这里安利给大家,非常好用的一款调试器。选择蓝牙为NS_RDTSS,参数按我这个配置就可以了。配置好之后,点击右侧的加号进行蓝牙连接。
蓝牙连接成功之后,开发板的LED2即可亮起,说明连接成功了。接下来通过我设置的,蓝牙收到00打开LED1,01即关闭LED1,接下来看看效果。
LED1亮起,可以看到蓝牙收到00数据;
LED1关闭,可以看到蓝牙收到01数据;
这是从串口助手截取到的数据
最后,由于手机只有一个,而且视频录得比较潦草,我就不发社区了,发在了咱们21ic的群里了,最后,感谢21ic与国民技术的给力活动,让我可以接触到国民技术的新产品,非常不错,开发起来不是很麻烦,上手很快,也希望大家也来试一试哦,这是一款非常给力的蓝牙方案的开发板哦。
|
@LZH休 :用手机的蓝牙调试助手发送的
请问用什么发送00数据呢