Преглед изворни кода

!436 修复PWM频率异常问题
Merge pull request !436 from diskwu/pwm

bernard пре 4 година
родитељ
комит
4beae1ebd5

+ 1 - 1
bsp/imx6ull-artpi-smart/drivers/drv_pwm.c

@@ -180,7 +180,7 @@ static rt_err_t imx6ull_pwm_set(struct rt_device_pwm *device, struct rt_pwm_conf
     base->PWMSAR = duty_cycles;
     base->PWMPR = period_cycles;
 
-    cr = (prescale << 4) |
+    cr = ((prescale -1 ) << 4) |
          MX3_PWMCR_STOPEN | MX3_PWMCR_DOZEN | MX3_PWMCR_WAITEN | MX3_PWMCR_CLKSRC | MX3_PWMCR_DBGEN;
 
     cr |= MX3_PWMCR_EN;

+ 19 - 4
bsp/imx6ull-artpi-smart/drivers/drv_rw007_port.c

@@ -22,8 +22,10 @@
 
 extern void spi_wifi_isr(int vector);
 
-static void rw007_gpio_init(void)
+static int rw007_gpio_init(void)
 {
+    int ret = 0;
+    uint8_t errorCnt = 10;
     /* Configure IO */
     rt_pin_mode(RW007_RST_PIN, PIN_MODE_OUTPUT);
     rt_pin_mode(RW007_INT_BUSY_PIN, PIN_MODE_INPUT_PULLDOWN);
@@ -36,19 +38,32 @@ static void rw007_gpio_init(void)
     /* Wait rw007 ready(exit busy stat) */
     while(!rt_pin_read(RW007_INT_BUSY_PIN))
     {
-        rt_thread_delay(5);
+        rt_thread_delay(rt_tick_from_millisecond(100));
+        if (errorCnt)
+        {
+            errorCnt--;
+        }
+        else
+        {
+            ret = -1;
+            break;
+        }
     }
 
     rt_thread_delay(rt_tick_from_millisecond(200));
     rt_pin_mode(RW007_INT_BUSY_PIN, PIN_MODE_INPUT_PULLUP);
+    return ret;
 }
 
 int wifi_spi_device_init(void)
 {
     char sn_version[32];
     
-    rw007_gpio_init();
-    
+    if (rw007_gpio_init() == -1)
+    {
+        rt_hw_wifi_init("rw007 gpio init fault!\n");
+        return -1;
+    }
     rt_hw_spi_device_attach(RW007_SPI_BUS_NAME, "rw007", RW007_CS_PIN);
     rt_hw_wifi_init("rw007");