关于MBI5043驱动代码

2020-03-08 19:22发布

手头上有一个项目需要用到MBI5043芯片,但是我对照数据手册的时序图写的时候,为啥没有想要的输出?以下是我的代码
  1. void MBI5043_init(void)
  2. {
  3.     nrf_gpio_cfg_output(LED_PWR);

  4.     nrf_gpio_cfg_output(MBI5043_SDI_PIN);
  5.     nrf_gpio_cfg_output(MBI5043_DCLK_PIN);
  6.     nrf_gpio_cfg_output(MBI5043_LED_R_LE_PIN);
  7.     nrf_gpio_cfg_output(MBI5043_LED_R_GCLK_PIN);
  8.     nrf_gpio_cfg_output(MBI5043_LED_Y_LE_PIN);
  9.     nrf_gpio_cfg_output(MBI5043_LED_Y_GCLK_PIN);
  10.    

  11.    
  12.     nrf_gpio_pin_clear(MBI5043_SDI_PIN);
  13.     nrf_gpio_pin_clear(MBI5043_DCLK_PIN);
  14.     nrf_gpio_pin_clear(MBI5043_LED_R_LE_PIN);
  15.     nrf_gpio_pin_clear(MBI5043_LED_R_GCLK_PIN);
  16.     nrf_gpio_pin_clear(MBI5043_LED_Y_LE_PIN);
  17.     nrf_gpio_pin_clear(MBI5043_LED_Y_GCLK_PIN);
  18. }


  19. static void MBI5043_Data_Lock(uint16_t data)
  20. {        
  21.     for(uint8_t i = 0;i < 16;i++)
  22.     {
  23.         if(data & 0x8000)
  24.         {
  25.             MBI5043_SDI_SET();
  26.         }
  27.         else
  28.         {
  29.             MBI5043_SDI_RESET();
  30.         }

  31.         if(i == 15)
  32.         {
  33.             MBI5043_LED_R_LE_SET();
  34.             
  35.             MBI5043_DCLK_SET();
  36.             MBI5043_DCLK_RESET();
  37.             
  38.             MBI5043_LED_R_LE_RESET();
  39.         }
  40.         else
  41.         {
  42.             MBI5043_DCLK_SET();
  43.             data=data<<1;
  44.             MBI5043_DCLK_RESET();
  45.         }  
  46.     }
  47. }


  48. static void MBI5043_Global_Lock()
  49. {   
  50.     for(uint8_t i = 0;i < 13;i++)
  51.     {   
  52.         MBI5043_SDI_RESET();
  53.         
  54.         MBI5043_DCLK_RESET();
  55.         MBI5043_DCLK_SET();

  56.       
  57.     }

  58.     MBI5043_LED_R_LE_SET();
  59.     for(uint8_t i = 0;i < 3;i++)
  60.     {
  61.         MBI5043_SDI_RESET();
  62.         
  63.         MBI5043_DCLK_RESET();
  64.         MBI5043_DCLK_SET();
  65.     }
  66.     MBI5043_LED_R_LE_RESET();
  67. }


  68. void set(void)
  69. {
  70.     for(uint8_t i = 0;i < 16;i++)
  71.     {
  72.         MBI5043_Data_Lock(0x5555);
  73.       
  74.     }
  75.     MBI5043_Global_Lock();
  76.     nrf_gpio_pin_set(LED_PWR);   
  77. }
  78. int main(void)
  79. {
  80.     MBI5043_init();

  81.     for (;;)
  82.     {
  83.         //my_fw_sched_execute();
  84.         //power_manage();
  85.          
  86.         set();
  87.         nrf_delay_ms(500);
  88.         
  89.         
  90.          
  91.     }   
  92. }
复制代码
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。