导航

    Freqchip开发者论坛

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

    华子 发布的帖子

    • RE: iic从机

      这个需要主从约定,IIC接收无法区分地址和数据

      发布在 FR801xH
      华
      华子
    • RE: 请问怎样开启BLE5.0的2M, 1M, 500K and 125K data rate?

      请参考gap_conn_phy_update 目前开放的接口有1M 2M

      发布在 FR801xH
      华
      华子
    • RE: 关于模块进入睡眠的问题

      EXTI+system_sleep_enable

      发布在 FR801xH
      华
      华子
    • RE: 关于进入低功耗问题

      发广播时,系统会自动定时唤醒
      停止发广播gap_stop_advertising 试一下

      发布在 FR801xH
      华
      华子
    • RE: 给的APP例程搜索不到设备

      1、使用Android9的手机试一下
      2、重新检查一下app的读写权限

      发布在 FR801xH
      华
      华子
    • RE: 可以编译连接,但不能仿真

      1、检查Jlink连接是否正确
      2、FR8016H中是否进入sleep,sleep模式下 是无法仿真的
      3、PC6 PC7是否mux为其他外设

      发布在 FR801xH
      华
      华子
    • RE: 请教如何运用低功耗管理

      @鱼的记忆 在 请教如何运用低功耗管理 中说:

      系统重启后能进入低功耗,电流为 20uA左右
      过上20s左右,系统会退出低功耗,电流为 3mA左右,再也进入不了低功耗?
      问题2:如果让BLE进入广播模式,系统无法进入低功耗模式,使用原始的广播配置,这个时候无法进入低功耗,电流一直在3mA左右?
      我想做个定时广播,广播完没有任何操作进入睡眠模式,还有就是进入睡眠模式广播怎样唤醒它

      正常程序中没有调用system_sleep_disable();的话 默认系统会自动进入sleep;
      可以通过os_timer唤醒

      发布在 FR801xH
      华
      华子
    • RE: 请教如何运用低功耗管理

      attribute((section("ram_code"))) void user_entry_before_sleep_imp(void)
      {
      uart_putc_noint_no_wait(UART1, 's');
      }
      attribute((section("ram_code"))) void user_entry_after_sleep_imp(void)
      {
      /* set PA2 and PA3 for AT command interface */

      system_set_port_mux(GPIO_PORT_A, GPIO_BIT_3, PORTA3_FUNC_UART1_TXD);
      

      // system_sleep_disable();

      if(__jump_table.system_option & SYSTEM_OPTION_ENABLE_HCI_MODE)
      {
          system_set_port_pull(GPIO_PA4, true);
          system_set_port_mux(GPIO_PORT_A, GPIO_BIT_4, PORTA4_FUNC_UART0_RXD);
          system_set_port_mux(GPIO_PORT_A, GPIO_BIT_5, PORTA5_FUNC_UART0_TXD);
          uart_init(UART0, BAUD_RATE_115200);
          NVIC_EnableIRQ(UART0_IRQn);
      
          system_sleep_disable();
      }
      
      uart_init(UART1, BAUD_RATE_115200);
      NVIC_EnableIRQ(UART1_IRQn);
      //uart_putc_noint_no_wait(UART1, 'w');
      
      // Do some things here, can be uart print
      
      NVIC_EnableIRQ(PMU_IRQn);
      

      }

      发布在 FR801xH
      华
      华子
    • RE: 8016HA开发板LED2蓝灯如何点亮

      修改一下pmu_set_led2_value函数,该函数修改后会影响sleep下的功耗
      if( value == 0 )
      {
      ool_write(PMU_REG_LED_CTRL, 0x00);
      }
      else
      {
      ool_write(PMU_REG_LED_CTRL, 0x04 );
      }

      发布在 FR801xH
      华
      华子
    • RE: 如何阻止系统进入低功耗模式?

      __jump_table.system_option &= ~(SYSTEM_OPTION_SLEEP_ENABLE);//取消sleep模式

      发布在 FR801xH
      华
      华子
    • RE: ble mesh 怎么连接天猫精灵?

      请参考有关培训视频教程:
      https://v.youku.com/v_show/id_XNDY0NDg5OTMxNg==.html

      发布在 FR801xH
      华
      华子
    • RE: iic从机

      @whp “发现I2C从机没有trans_done_ie中断
      加了iic_reg->control.trans_done_ie = 1;”
      从机没有trans_done_ie,建议从机发送的时候使能slv_noful_ie,通过slv_trans_ful检测slave fifo非满,实现中断发送

      发布在 FR801xH
      华
      华子
    • RE: iic从机

      @whp “调用后系统就崩溃了
      Crash, dump regs:”,检查一下中断向量表0_1587091416099_d4ebbbe5-800f-4d47-bd4a-714cf725a138-image.png

      发布在 FR801xH
      华
      华子
    • RE: 8016H音频输出

      AOUT_P、AOUT_N任选一个引脚作为输出信号即可,另外一个引脚悬空,但是不建议使用单端信号输出,会有底噪。

      发布在 FR801xH
      华
      华子
    • RE: iic从机

      void iic_init(enum iic_channel_t channel, uint16_t speed, uint16_t slave_addr)
      {
      volatile struct iic_reg_t *iic_reg;

      if(channel == IIC_CHANNEL_0)
      {
      iic_reg = IIC0_REG_BASE;
      }
      else
      {
      iic_reg = IIC1_REG_BASE;
      }

      iic_reg->clkdiv.clk_div = (system_get_pclk_config()*1000/speed-10)/2;
      iic_reg->control.soft_reset = 1;
      iic_reg->control.seven_bit = 1;
      iic_reg->address.slv_addr = slave_addr;

      iic_byte_period[channel] = 1000/speed + 1;
      //enable interrupt
      iic_reg->control.rec_noemp_ie = 1;//接收fifo非空中断
      iic_reg->control.slv_noful_ie = 1;//从机发送fifo不满中断
      NVIC_EnableIRQ(IIC0_IRQn);
      }

      void iic0_isr(void)
      {
      volatile struct iic_reg_t *iic_reg = IIC0_REG_BASE;
      uint8_t data;

      if(iic_reg->status.rec_emp == 0)//接收fifo非空
      {
      iic_test_reg_addr = iic_reg->data;//从机接收数据
      co_printf("%d rec_data = %d \r\n",iic_master_data_rx_cnt++,iic_test_reg_addr);
      }
      else if(iic_reg->status.slv_trans_ful ==0){//从机发送fifo不满
      while(iic_reg->status.slv_trans_ful ==0){
      data = rand() & 0xFF;//从机发送随机数据
      iic_reg->slavedata.slave_data = data;//iic_slave_data_Tx_buffer[iic_slave_data_Tx_cnt++];
      co_printf("send %d.\r\n", data);
      }
      }
      }

      发布在 FR801xH
      华
      华子
    • RE: 怎么应用硬件定时器

      NVIC_EnableIRQ(TIMER1_IRQn);

      发布在 FR801xH
      华
      华子
    • RE: IIC从机

      void iic_init(enum iic_channel_t channel, uint16_t speed, uint16_t slave_addr)
      {
      volatile struct iic_reg_t *iic_reg;

      if(channel == IIC_CHANNEL_0)
      {
          iic_reg = IIC0_REG_BASE;
      }
      else
      {
          iic_reg = IIC1_REG_BASE;
      }
      
      iic_reg->clkdiv.clk_div = (system_get_pclk_config()*1000/speed-10)/2;
      iic_reg->control.soft_reset = 1;
      iic_reg->control.seven_bit = 1;
      iic_reg->address.slv_addr = slave_addr;
      
      iic_byte_period[channel] = 1000/speed + 1;
      //enable interrupt
      iic_reg->control.rec_noemp_ie = 1;//接收fifo非空中断
      iic_reg->control.slv_noful_ie = 1;//从机发送fifo不满中断
      NVIC_EnableIRQ(IIC0_IRQn);
      

      }

      void iic0_isr(void)
      {
      volatile struct iic_reg_t *iic_reg = IIC0_REG_BASE;
      uint8_t data;

      if(iic_reg->status.rec_emp == 0)//接收fifo非空
      {
          iic_test_reg_addr = iic_reg->data;//从机接收数据
      	co_printf("%d rec_data =  %d   \r\n",iic_master_data_rx_cnt++,iic_test_reg_addr);
      }
      else if(iic_reg->status.slv_trans_ful ==0){//从机发送fifo不满
      	while(iic_reg->status.slv_trans_ful ==0){
      		data = rand() & 0xFF;//从机发送随机数据
      		iic_reg->slavedata.slave_data = data;//iic_slave_data_Tx_buffer[iic_slave_data_Tx_cnt++];
      		 co_printf("send %d.\r\n", data);
      
      	}
      }
      

      }

      发布在 FR801xH
      华
      华子