导航

    Freqchip开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 最新
    1. 主页
    2. ZHANGMM
    3. 帖子
    Z
    • 继续与 ZHANGMM 聊天
    • 开始与 ZHANGMM 的新会话
    • 举报资料
    • 资料
    • 关注
    • 粉丝
    • 屏蔽
    • 主题
    • 帖子
    • 最佳
    • 群组

    ZHANGMM 发布的帖子

    • RE: 能否提供一下WS2812B的程序实例?

      @widdel Of course, send me your email address and I will send you the information via email.

      发布在 FR801xH
      Z
      ZHANGMM
    • RE: 能否提供一下WS2812B的程序实例?

      1.经过测试,模拟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();
        }
        }
        }
      发布在 FR801xH
      Z
      ZHANGMM
    • 能否提供一下WS2812B的程序实例?

      能否提供一下WS2812B的程序实例?,还在驱动WS2812的软件实现方式,目前用IO模拟的方式无法实现1us以下的软件延时。

      发布在 FR801xH
      Z
      ZHANGMM
    • RE: FR8012支不支持蓝牙MESH组网功能?有没有测试例程?

      @刘流鎏 测试蓝牙MESH的APP有吗

      发布在 FR801xH
      Z
      ZHANGMM
    • FR8012支不支持蓝牙MESH组网功能?有没有测试例程?

      FR8012支不支持蓝牙MESH组网功能?有没有测试例程

      发布在 FR801xH
      Z
      ZHANGMM
    • FR8012 能不能作为ANT+设备使用?作为主机接收ANT+设备的数据。

      想要做一个智能仪表设备,需要一个支持ANT+协议的蓝牙主机,接收心率数据,踏频数据。

      发布在 FR801xH
      Z
      ZHANGMM
    • 关于FR8012 移植LVGL V7

      0_1663226247798_c7da4455-7665-4023-9b7b-ef4a4945003b-image.png

      FR8012 能够移植成功LVGL V7.1并且能够正常运行,但是由于没有硬件SPI DMA支持,只能通过点刷导致刷屏速度太慢。不知道官方有没有支持LVGL的刷屏操作实例可以参考。并且在循环任务中进行刷屏,手机连接蓝牙会出现不稳定的情况,经常自动断开连接。

      发布在 FR801xH
      Z
      ZHANGMM
    • RE: FR8018使用rtos例程时,应该如何正确添加ota服务?

      @dd家辉
      链接:https://pan.baidu.com/s/1NGMjpuwoZRCsG0vUhymX6A
      提取码:9f49

      我这边OTA测试没问题的 DEMO

      发布在 FR801xH
      Z
      ZHANGMM
    • RE: FR801XH 通过LED2显示蓝牙连接状态

      @zhangmm
      ool_write(PMU_REG_LED_CTRL, 0x04);//LED HIGH
      ool_write(PMU_REG_LED_CTRL, 0x04);//LED LOW
      开发板LED高电平点亮,低电平熄灭

      发布在 FR801xH
      Z
      ZHANGMM
    • RE: FR8018使用rtos例程时,应该如何正确添加ota服务?

      ble_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
      Z
      ZHANGMM
    • FR801XH 通过LED2显示蓝牙连接状态

      0_1635907066443_eb939943-0459-4084-9ad3-e4fa32f9247d-image.png
      引入
      #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 LOW

      2.蓝牙断开通知:GATTC_MSG_LINK_LOST
      熄灭LED2函数
      ool_write(PMU_REG_LED_CTRL, 0x00);//LED HIGH

      蓝牙断开后要更新广播服务,不然搜索不到蓝牙
      ali_ota_start_advertising();

      到这里就实现了通过LED2显示蓝牙连接状态。

      发布在 FR801xH
      Z
      ZHANGMM
    • FR801XH 蓝牙MTU长度设置

      0_1635906685283_1f25e542-aeba-4c37-ae17-1da481ea82c6-image.png

      在连接成功服务读取当前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);

      发布在 FR801xH
      Z
      ZHANGMM