@widdel Of course, send me your email address and I will send you the information via email.
ZHANGMM 发布的帖子
- 
		RE: 能否提供一下WS2812B的程序实例?发布在 FR801xH
- 
		RE: 能否提供一下WS2812B的程序实例?发布在 FR801xH1.经过测试,模拟IO的方式,最小时间间隔只能做到1us。所以这种方式无法实现WS2812的时序要求。 
 2.通过普通PWM模拟时序的方式实现灯珠的驱动,配置PWM的工作频率为800k,能够返回时序要求,但是PWM无法设置为单次输出模式,所以也无法实现灯珠的驱动。
 3.通过PMU PWM模拟时序,PWM可以设置为单次输出模式,但最小时间间隔也无法满足驱动时序要求,所以也无法实现灯珠的驱动。
 4.通过SPI模拟时序的方式,实测能够实现WS2812B灯珠的驱动控制#include "ws2812B.h" 
 #include "driver_pmu_pwm.h"
 #include "driver_pmu.h"
 void ws2812_init(void)
 {
 system_set_port_mux(GPIO_PORT_A, GPIO_BIT_4, PORTA4_FUNC_SSP0_CLK);
 system_set_port_mux(GPIO_PORT_A, GPIO_BIT_6, PORTA6_FUNC_SSP0_DOUT);
 /* working in master mode /
 ssp_init_(8, SSP_FRAME_MOTO, SSP_MASTER_MODE, 6400000, 2, NULL);
 }
 /*- @brief ws281x模块用到的延时函数
- @param delay_num :延时数 (示波器测量延时时间 = delay_num * 440ns )
- @retval None
 /
 void ws281x_delay(unsigned int delay_num)
 {
 while(delay_num--);
 }
 /*
- @brief 根据WS281x芯片时序图编写的发送0码,1码RESET码的函数
- @param
- @retval None
 /
 void ws281x_sendLow(void) //发送0码
 {
 ssp_send_byte(0xe0);
 }
 void ws281x_sendHigh(void) //发送1码
 {
 ssp_send_byte(0xf8);
 }
 void ws2811_Reset(void) //发送RESET码
 {
 SET_LOW();
 co_delay_10us(6);
 SET_HIGH();
 SET_LOW();
 }
 /*
- @brief 发送点亮一个灯的数据(即24bit)
- @param dat:颜色的24位编码
- @retval None
 */
 void ws281x_sendOne(uint32_t dat)
 {
 uint8_t i;
 unsigned char byte;
 for(i = 24; i > 0; i--)
 {
 byte = ((dat>>i) & 0x01); //位操作,读取dat数据的第i位
 if(byte == 1)
 {
 ws281x_sendHigh();
 }
 else
 {
 ws281x_sendLow();
 }
 }
 }
 
- 
		关于FR8012 移植LVGL V7发布在 FR801xH FR8012 能够移植成功LVGL V7.1并且能够正常运行,但是由于没有硬件SPI DMA支持,只能通过点刷导致刷屏速度太慢。不知道官方有没有支持LVGL的刷屏操作实例可以参考。并且在循环任务中进行刷屏,手机连接蓝牙会出现不稳定的情况,经常自动断开连接。 
- 
		RE: FR8018使用rtos例程时,应该如何正确添加ota服务?发布在 FR801xH@dd家辉 
 链接:https://pan.baidu.com/s/1NGMjpuwoZRCsG0vUhymX6A
 提取码:9f49我这边OTA测试没问题的 DEMO 
- 
		RE: FR801XH 通过LED2显示蓝牙连接状态发布在 FR801xH@zhangmm 
 ool_write(PMU_REG_LED_CTRL, 0x04);//LED HIGH
 ool_write(PMU_REG_LED_CTRL, 0x04);//LED LOW
 开发板LED高电平点亮,低电平熄灭
- 
		RE: FR8018使用rtos例程时,应该如何正确添加ota服务?发布在 FR801xHble_mesh测试实例 
 在proj_main.c中引入头文件
 #include "ota.h"
 #include "ota_service.h"
 目录........\components\ble\profiles\ble_ota
 在driver文件夹添加
 1.ota.c
 2.ota.service.c
 在初始化函数
 void user_entry_after_ble_init(void)
 {
 ...........
 //添加OTA固件升级服务
 ota_gatt_add_service();
 }
 烧录固件,就可以使用OTA APP成功连接设备,添加BIN固件,进行固件升级。
- 
		FR801XH 通过LED2显示蓝牙连接状态发布在 FR801xH 
 引入
 #include "driver_pmu.h"//LED2
 switch(p_msg->msg_evt)
 {
 case GATTC_MSG_LINK_CREATE:
 //蓝牙连接
 if(gatt_get_mtu(p_msg->conn_idx)<247){
 p_msg->param.msg.msg_len=247;//MTU长度设置
 gatt_mtu_exchange_req(p_msg->conn_idx);
 }
 ool_write(PMU_REG_LED_CTRL, 0x04);//LED LOW
 SEGGER_RTT_printf(0,"Bluetooth connectivity\r\n");
 break;
 case GATTC_MSG_LINK_LOST:
 //蓝牙断开,重新开始广播
 ool_write(PMU_REG_LED_CTRL, 0x00);//LED HIGH
 ali_ota_start_advertising();
 SEGGER_RTT_printf(0,"Bluetooth Disconnect\r\n");
 break;
 }
 1.蓝牙连接成功通知:GATTC_MSG_LINK_CREATE
 点亮LED2函数
 ool_write(PMU_REG_LED_CTRL, 0x04);//LED LOW2.蓝牙断开通知:GATTC_MSG_LINK_LOST 
 熄灭LED2函数
 ool_write(PMU_REG_LED_CTRL, 0x00);//LED HIGH蓝牙断开后要更新广播服务,不然搜索不到蓝牙 
 ali_ota_start_advertising();到这里就实现了通过LED2显示蓝牙连接状态。 
- 
		FR801XH 蓝牙MTU长度设置发布在 FR801xH 在连接成功服务读取当前MTU长度,默认为23 
 读取MTU长度
 gatt_get_mtu(p_msg->conn_idx);
 设置MTU长度
 p_msg->param.msg.msg_len=247;//MTU长度设置
 gatt_mtu_exchange_req(p_msg->conn_idx);