www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

首頁 > 評測 > [ LKS32MC037E開發(fā)板評測 ]+環(huán)境搭建與點燈實驗

[ LKS32MC037E開發(fā)板評測 ]+環(huán)境搭建與點燈實驗

  
  • 作者:
  • 來源:
  • [導讀]
  • #申請原創(chuàng)# 開發(fā)板LKS32MC037E已收到有段時間了,前段時間嘗試采用MCPWM方式去驅動尼得科無刷直流電機,帶霍爾接口的。電機一直原地抖動,并未能轉動起來,手里要有臺示波器就好了。今天星期六,也是來年工作的第一個
#申請原創(chuàng)# 開發(fā)板LKS32MC037E已收到有段時間了,前段時間嘗試采用MCPWM方式去驅動尼得科無刷直流電機,帶霍爾接口的。電機一直原地抖動,并未能轉動起來,手里要有臺示波器就好了。今天星期六,也是來年工作的第一個周末,先來分享一下簡單的點燈測試。
        LKS32MC037E開發(fā)套件包含MCU板+功率底板,這款MCU搭建32位Cortex-M0內核,主頻48MHz,采用SSOP24封裝,工業(yè)級工作溫度范圍,適用于有感BLDC、無感BLDC、有感FOC、無感FOC及步進電機、永磁同步、異步電機等控制系統(tǒng)。也可適用于數(shù)字電源控制系統(tǒng)。LKS_EVB_MVPOWPRE_V2.0支持DC7~24V輸入,DC24V時功率在80W以下,可實現(xiàn)無感方波、有感或無感FOC控制,支持按鍵啟停和模擬電位器調速,F(xiàn)G輸出,串口通訊等功能。開發(fā)板的系統(tǒng)資源框圖如下:
        “LKS_EVB_MVPOWPRE_V2.0”板子的PCB點位圖如下,可以大致得了解各接口的布局。

        從官網:https://www.linkosemi.com/LKS03x/list.aspx可以獲取關于LKS32MC037E的開發(fā)資源包(包括基于Keil的pack包)。電腦中已經裝好Keil,只需將下載好的“Linko.LKS03x.1.0.6.pack”文件,雙擊打開并安裝,后續(xù)打開官方提供的demo例程即可選擇工程對應的MCU型號。

         此次實驗意在點亮LED2,接下來我們根據(jù)官方提供的資料,找出LED2與MCU板上的LKS32MC037E連接管腳。



         由此可見,只需要將P1.4管腳輸出高電平則LED2燈被點亮,P1.4管腳輸出低電平則LED2熄滅。在GPIO參考例程中,簡單修改即可點亮LED2.
  1. #include "lks32mc03x_lib.h"
  2. #include "hardware_init.h"
  3. #include "delay.h"

  4. void Hardware_init(void)
  5. {
  6.     __disable_irq();                  /* 關閉中斷 中斷總開關 */
  7.     SYS_WR_PROTECT = 0x7a83;          /* 開啟寫使能*/
  8.     IWDG_DISABLE();                   /* 關閉獨立看門狗使能*/
  9.     FLASH_CFG |= 0x00080000;          /* FLASH 預取加速使能*/
  10.   
  11.     delay_init(48);                   /* 延時函數(shù)初始化時鐘48MHz*/
  12.     GPIO_init();                      /* GPIO初始化 */
  13.     delay_us(100);                    /* 延時等待硬件初始化穩(wěn)定 */
  14.     __enable_irq();                   /* 開啟總中斷 */
  15. }
  16. void Clock_Init(void)
  17. {
  18.     SYS_WR_PROTECT = 0x7a83;   /* 解除系統(tǒng)寄存器寫保護 */
  19.     SYS_VolSelModule(1);       /* 0: 3.3V ; 1: 5.0V*/
  20.     SYS_AFE_REG0 |= BIT15;     /* BIT15:PLLPDN */
  21.     SoftDelay(100);            /* 等待PLL穩(wěn)定*/
  22.           SYS_CLK_CFG = 0x000001ff; /* BIT[9:8]:0: CLK_HS,1:PLL,2:LRC,3:LRC
  23.                                  | BIT[7:0]CLK_DIV  | 0x1ff對應48M時鐘 */
  24. }
  25. void SystemInit(void)
  26. {
  27.     Clock_Init(); /* 時鐘初始化 */
  28. }
  29. void GPIO_init(void)
  30. {
  31.     GPIO_InitTypeDef GPIO_InitStruct;
  32.     GPIO_StructInit(&GPIO_InitStruct);
  33.     /* P1.4*/
  34.     GPIO_InitStruct.GPIO_Mode = GPIO_Mode_OUT;    /*輸出模式*/
  35.     GPIO_InitStruct.GPIO_Pin = GPIO_Pin_4;
  36.     GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_NOPULL; /*不上拉*/
  37.     GPIO_Init(GPIO1, &GPIO_InitStruct);
  38.           GPIO_ResetBits(GPIO1, GPIO_Pin_4);      /* LED2 滅*/
  39. }
  40. void SoftDelay(u32 cnt)
  41. {
  42.     volatile u32 t_cnt;

  43.     for (t_cnt = 0; t_cnt < cnt; t_cnt++)
  44.     {
  45.         __nop();
  46.     }
  47. }
復制代碼
  1. #include "delay.h"
  2. #include "lks32mc03x_lib.h"

  3. static u32 fac_us = 0;
  4. static u32 fac_ms = 0;

  5. void delay_init(u32 SYSCLK)
  6. {
  7.         SysTick->CTRL&=~(1<<2);                                        //SYSTICK使用外部時鐘源,1/8 HCLK         
  8.         fac_us=SYSCLK/8;                                                    //不論是否使用OS,fac_us都需要使用,每產生1us,需要多少次數(shù),因為是通過一個計數(shù)寄存器計時的。
  9.         fac_ms=(u16)fac_us*1000;                                //非OS下,代表每個ms需要的systick時鐘數(shù)   
  10. }

  11. void delay_us(u32 nus)
  12. {
  13.         u32 temp;                     
  14.         SysTick->LOAD=nus*fac_us;                                 //時間加載                           
  15.         SysTick->VAL=0x00;                                        //清空計數(shù)器
  16.         SysTick->CTRL=0x01 ;                                      //開始倒數(shù)          
  17.         do
  18.         {
  19.                 temp=SysTick->CTRL;
  20.         }while((temp&0x01)&&!(temp&(1<<16)));        //等待時間到達   
  21.         SysTick->CTRL=0x00;                                       //關閉計數(shù)器
  22.         SysTick->VAL =0X00;                                       //清空計數(shù)器
  23. }

  24. void delay_xms(u32 nms)
  25. {
  26.         u32 temp;                  
  27.         SysTick->LOAD=(u32)nms*fac_ms;                        //時間加載(SysTick->LOAD為24bit)
  28.         SysTick->VAL =0x00;                                   //清空計數(shù)器
  29.         SysTick->CTRL=0x01 ;                                  //開始倒數(shù)  
  30.         do
  31.         {
  32.                 temp=SysTick->CTRL;
  33.         }while((temp&0x01)&&!(temp&(1<<16)));        //等待時間到達   
  34.         SysTick->CTRL=0x00;                                       //關閉計數(shù)器
  35.         SysTick->VAL =0X00;                                       //清空計數(shù)器                      
  36. }
  37. //延時nms
  38. //nms:0~65535
  39. void delay_ms(u32 nms)
  40. {
  41. #if 1
  42.         u8 repeat=nms/540;                                                //這里用540,是考慮到某些客戶可能超頻使用,
  43.                                                                                         //比如超頻到248M的時候,delay_xms最大只能延時541ms左右了
  44.         u16 remain=nms%540;
  45.         while(repeat)
  46.         {
  47.                 delay_xms(540);
  48.                 repeat--;
  49.         }
  50.         if(remain)delay_xms(remain);
  51. #else
  52.         u32 t_cnt;

  53.         for(t_cnt = 0; t_cnt < nms*1000; t_cnt++)
  54.         {
  55.                 __nop();
  56.         }
  57. #endif
  58. }
復制代碼
  1. #include "lks32mc03x_lib.h"
  2. #include "hardware_init.h"
  3. #include "delay.h"

  4. int main(void)
  5. {
  6.         Hardware_init(); /* 硬件初始化 */
  7.         for (;;)
  8.         {
  9.           GPIO_SetBits(GPIO1, GPIO_Pin_4);    /* LED2 亮*/
  10.                 delay_ms(300);                     /* 延時20ms*/
  11.                
  12.                 GPIO_ResetBits(GPIO1, GPIO_Pin_4);  /* LED2 滅*/
  13.                 delay_ms(300);     
  14.         }
  15. }
復制代碼
       編譯完成后,將JLink燒錄器連接到MCU板上的J1接口,Keil中的Debug中選擇J-LINK方式下載程序,識別到JLink調試器。

         程序下載到MCU后,然后將蜂鳴器連接到MCU板上P1排針上的1、2管腳上,按一下RESET鍵,重啟開發(fā)板,則會發(fā)現(xiàn)LED2點亮的同時,蜂鳴器報警聲響起。此次簡單的點燈測試就到此結束,感謝凌鷗提供的板子,至于電機驅動功能評測部分,工程中還需要針對電機類型進行調試,參考例程的注釋比較專業(yè),沒有接觸過工業(yè)電機應用行業(yè)的開發(fā)者,理解起來還是比較吃力的,后續(xù)有時間調試再評測電機應用方面的測試效果。
LKS32MC037E點LED2與鳴蜂鳴器

  • 本文系21ic原創(chuàng),未經許可禁止轉載!

網友評論