小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

MiniFly四軸飛行器之部分系統(tǒng)及電源分析

 人生如戲ds3xoc 2019-10-25

  最近硬件四軸很火,了解了很久,還是選擇了MiniFly,主要還是資料多,后邊可以有人討論,不像很多就是建了個群,研究問題還是在論壇方便很多。

  四軸終于拿到手,功能很強大,主要是還支持二次開發(fā),可以研究下玩玩小四軸了

  還是先從硬件入手分析下

  1.系統(tǒng)框架

  主體可以分成兩個小系統(tǒng),后續(xù)可以按照這個順序分析代碼

  1.通信部分---基于M0和NFR51822,包括電源管理

  2.控制部分---基于M4和外圍傳感器

  image.png

  2.比較關(guān)注的電源部分

  電源還是比較考究,直接包含了充電功能,不用每次使用外置的充電模塊(之前自制過一個充電模塊,看來以后可以集成到電路里了)

  按鍵斷電功能這個比較喜歡:這個是NFR51822控制VEN_D引腳來實現(xiàn)斷電的

  上個NFR51822部分電路

  image.png

  開始看代碼,大致看了下程序,先是監(jiān)測按鍵狀態(tài)

復(fù)制代碼

  /*按鍵掃描處理*/

  void buttonProcess()

  {

  static unsigned int lastTick;

  static unsigned int pressedTick;

  static bool pressed = false;

  if (lastTick != systickGetTick())

  {

  lastTick = systickGetTick();

  if(pressed==false && BUTTON_READ()==BUTTON_PRESSED)

  {

  pressed = true;

  pressedTick = systickGetTick();

  }

  else if(pressed==true)

  {

  if(BUTTON_READ()==BUTTON_RELEASED)

  pressed = false;

  if ((systickGetTick()-pressedTick) > BUTTON_LONGPRESS_TICK)

  state = buttonLongPress;

  else if(BUTTON_READ()==BUTTON_RELEASED)

  state = buttonShortPress;

  }

  }

  }

  /*獲取按鍵狀態(tài)*/

  buttonEvent_e buttonGetState()

  {

  buttonEvent_e currentState = state;

  state = buttonIdle;

  return currentState;

  }

復(fù)制代碼

  然后就是在主函數(shù)中進行相應(yīng)的操作,先不說了

  看下怎么實現(xiàn)電源開關(guān)的:這么最后應(yīng)該F1部分還是有電的,只是消耗較少,尋求一種可以完全斷電的方案??

復(fù)制代碼

  /*開啟電源*/

  void pmPowerOn(void)

  {

  nrf_gpio_cfg_output(UART_TX_PIN); //使能串口TX

  nrf_gpio_pin_set(UART_TX_PIN);

  nrf_gpio_cfg_output(RADIO_PAEN_PIN);// 開啟無線功能

  nrf_gpio_pin_set(RADIO_PAEN_PIN);

  nrf_gpio_cfg_output(PM_VBAT_SINK_PIN);// 設(shè)置ADC

  nrf_gpio_pin_clear(PM_VBAT_SINK_PIN);

  pmStartAdc(); //開啟ADC轉(zhuǎn)換

  }

復(fù)制代碼
復(fù)制代碼

  /*關(guān)閉電源*/

  void pmPowerOff(void)

  {

  nrf_gpio_cfg_input(UART_TX_PIN, NRF_GPIO_PIN_PULLDOWN);

  uartDeinit();

  nrf_gpio_cfg_input(STM_NRST_PIN, NRF_GPIO_PIN_PULLDOWN);

  nrf_gpio_pin_clear(STM_NRST_PIN);

  nrf_gpio_pin_clear(PM_VCCEN_PIN); //關(guān)閉 LDO使能控制腳

  LED_OFF();

  nrf_gpio_pin_clear(RADIO_PAEN_PIN); //關(guān)閉PA

  nrf_gpio_cfg_input(PM_VBAT_SINK_PIN, NRF_GPIO_PIN_NOPULL);

  NRF_POWER->SYSTEMOFF = 1UL;

  while(1); //進入死循環(huán)

  }

  void pmInit()

  {

  /* STM32 電源配置 */

  nrf_gpio_cfg_output(PM_VCCEN_PIN);

  nrf_gpio_pin_set(PM_VCCEN_PIN); //使能stm32電源

  msDelay(100);

  /* STM32 復(fù)位 */

  nrf_gpio_cfg_output(STM_NRST_PIN);

  nrf_gpio_pin_clear(STM_NRST_PIN);

  msDelay(100);

  nrf_gpio_pin_set(STM_NRST_PIN);

  msDelay(100);

  nrf_gpio_cfg_input(USB_CONNECTED_PIN, NRF_GPIO_PIN_NOPULL);

  nrf_gpio_cfg_input(PM_CHG_STATE_PIN, NRF_GPIO_PIN_PULLUP);

  pmPowerOn(); //開啟電源

  } 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多