基於 S32K312 - 使用ADC控制PWM占空比實現小檯燈功能

關鍵字 :NXPS32K3系列MCUArduino Shield

項目介紹

        本次試用項目基於NXP S32K312系列核心板,旨在通過ADC(模數轉換器)採集電位器的模擬信號,控制PWM(脈寬調製)的占空比,從而實現小檯燈的手動調光功能。項目的主要目標是利用S32K312晶片的強大外設功能,結合ADC和PWM模塊,實現一個簡單的手動調光系統。通過手動調整電位器位置,藉助ADC將模擬信號轉換為數字信號,進而調整PWM的占空比,控制LED燈的亮度,達到手動調光的效果。

試用項目過程記錄

1.開發環境搭建

首先,按照大大通平台提供的教程,搭建了S32K312的開發環境。安裝了S32 Design Studio for S32 Platform(版本6),並配置了S32K3xx的開發包和RTD驅動。開發環境的搭建過程相對順利,NXP提供的文檔和教程非常詳細,幫助我快速完成了環境配置。不熟悉的小夥伴可以參考作者第一篇博文
 
2.硬體連接

此處使用了成品arduino擴展板,板載多種外設.可滿足本次實驗用途。實物圖如下所示。

 

3.PWM外設配置

首先我們新建freertos demo工程

初次編譯前,記得更新源代碼

參考例程Emios_Pwm_Ip_Example_S32K344代碼,對S32K312的PWM外設進行配置



我們使用D12引腳控制LED,根據原理圖可知D12與開發板PTB15相連接。

                   首先我們配置PTB15

        

                   再配置剩下幾個引腳

        

                  
進一步添加組件Emios_Pwm及Emios_Mcl_Ip

        

        

 配置Emios_Mcl_Ip        

        

                   配置Emios_Pwm

        

        

                   配置Siul2_Port

        

        

        

接下來,修改main.c代碼文件
添加頭文件及宏定義

        

                   添加模塊初始化代碼

        

                  
在ReceiveTask線程里添加PWM控制相關代碼

        

                   編譯並運行,可以觀察到arduino擴展板D12連接的紅色LED每隔1秒亮度會增加一些,增加到第十秒左右會自動熄滅並再次遞增亮度.

                   效果圖:

                   低亮度

        

                   高亮度

        

  1. ADC配置

ADC模塊相關配置方法可以參照作者第三篇博文.

也可以參考以下鏈接

https://blog.csdn.net/lnniyunlong99/article/details/136059070

本次使用Arduino擴展板上的PA0讀取電位器上的數據,通過查看原理圖得知,Arduino擴展板的PA0連接的是晶片的PTD1引腳


我們首先添加有關PTD1的引腳配置


添加ADC驅動組件


配置ADC組件




接下來修改代碼部分,編輯main.c文件
新增頭文件及宏定義


添加ADC初始化代碼


修改ReceiveTask線程中的代碼


最後為了加快ADC採集頻率,需要修改SendTask線程中函數vTaskDelay函數的參數


如果不能正常調試需要調整debugger相關配置

        

至此工程配置已完畢

成果展示

ADC讀數


LED亮燈效果


ADC讀數


LED點亮效果



使用感受及心得

        通過本次S32K312開發板的試用,我對NXP的S32K3系列晶片有了更深入的了解。S32K312晶片的外設資源豐富,尤其是ADC和PWM模塊的性能非常強大,能夠滿足複雜的控制需求。開發過程中,S32 Design Studio提供了良好的開發環境,配合NXP的RTD驅動和HAL庫,大大簡化了外設的配置和控制。

       在項目開發過程中,遇到了一些挑戰,如ADC採樣精度的調整、PWM頻率的設置等。通過查閱NXP的官方文檔和社區論壇,我逐步解決了這些問題,並積累了寶貴的經驗。此外,使用Git進行代碼版本管理,幫助我在調試過程中快速回退到之前的版本,避免了重複配置的麻煩。

       總體而言,S32K312開發板非常適合用於汽車電子和工業控制領域的開發,尤其是需要高性能ADC和PWM的應用場景。通過本次試用,我不僅掌握了S32K312的基本使用方法,還積累了豐富的調試經驗,為今後的項目開發打下了堅實的基礎。

        S32DS最新的例程沒有適配S32K312的,只對S32K344等晶片進行了適配,雖然不能直接編譯燒錄,但對我們初學者配置S32K312晶片的相關功能仍然有很大的幫助作用.只要稍加動腦思考我相信S32K312的外設一樣也可以正常驅動起來並使用.


未來展望

        在未來的項目中,我計劃進一步優化調光算法,增加更多的傳感器和控制邏輯,實現更加智能化的照明系統。同時,我也期待能夠探索S32K312晶片的其他外設功能,如CAN總線、Lin總線等,進一步提升項目的複雜度和實用性。

         此文章來自“S32K312 開發板評測活動”測評者:龔鶴雄

   



歡迎在視頻下方留言評論,我們會及時回復您的問題。

如有更多需求,歡迎聯繫大聯大世平集團 ATU 部門:atu.sh@wpi-group.com   作者:WPIg 


更多資訊,請掃碼關注我們!


★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論