Hands-On 基於 Flagchip FC4150 MCAL-點亮 LED 燈

簡介

        本文將詳細介紹如何使用 EB 工具配置 Flagchip FC4150 MCAL 來點亮 LED 燈,並重點強調了配置 mcu、port 和 dio 模塊的過程以及對這些模塊的詳細解釋。

 

硬體平台:旗芯微 FC4150 DEMO BOARD V2 開發板

軟體平台:EB tresos 28.1.0 、Flagchip_FC_IDE 4.04

MCAL: V1.1.0 & V1.1.1

   


 一 、MCAL 配置

1.1、配置 MCU 模塊

        1.1.1、 在 Module Configurations 中添加 MCU 模塊,選擇 MCU Clock Setting Config 下的 Index ,雙擊並打開。

▲ 圖 1.1.1 

 

1.1.2、 配置系統時鐘

 ①、配置外部輸入晶振時鐘為 24 Mhz。

▲ 圖 1.1.2.1 

       ②、配置 PLL0 的輸入時鐘為 FOSC 、我們將 PLL0 頻率設置為 150Mhz 的話,算出 PLL0 Pre Divider 的分頻係數為 4 、再設置倍頻係數為 50 ,此時 PLL0 頻率為 300Mhz,因為 PLL0 會自動二分頻,所以 PLL0 頻率為 150Mhz。



▲ 圖 1.1.2.2 

 ③、配置 PLL0 為系統時鐘

▲ 圖 1.1.2.3 

 

④、根據 demo board LED 原理圖所示,我們需要在 PCC 下添加 Port B 、C、D 的外設並配置為時鐘使能

▲ 圖 1.1.2.4.1 


▲ 圖 1.1.2.4.2 


▲ 圖 1.1.2.4.3


 

1.2、配置 PORT 模塊

        1.2.1  在 Module Configurations 中添加 PORT 模塊,在 PORT 模塊中的  PortConfig 下添加 PORT B、C、D。

▲ 圖 1.2.1 

 

1.2.2 雙擊 Index 1 進入 Port B  的 PortPin 界面下,添加  PTB28 引腳並命名為 LED2


                                                                                                                                           ▲ 圖 1.2.2

 

1.2.3 雙擊 Index 1 進入 PTB28 的配置界面,將 PTB28 配置為 GPIO 輸出,初始狀態為高


                                                                                                                                         ▲ 圖 1.2.3

 

1.2.4 如 1.2.2-1.2.3 所示,PTC30、PTD4 的 IO 配置重複以上步驟即可

 

1.3、配置 DIO 模塊

        1.3.1 在 Module Configurations 中添加 DIO 模塊,在 DIO 模塊中的  DioPort 下添加 5 個 Dioport,將 Dio Port Id一一修改,Dio Port Id 0 (對應 PortA )、Dio Port Id 1 (對應PortB)、以此類推。

▲ 圖 1.3.1

 

        1.3.2 雙擊 Index 1 進入 Dioport_B ,添加一個 DioChannel 命名為 LED2,DIO Channel id 修改為 28 ,對應圖 1.2.4.1 中的 PTB_28 引腳。



▲ 圖 1.3.2

 

1.3.3 如 1.3.2所示,PTC30、PTD4 的DIO 配置重複以上步驟即可


 

二、示例代碼解析

2.1 將 EB 配置好的工程編譯並更新代碼至 FCIDE 中


▲ 圖 2.1

 

 

2.2 Mcal_DemoBoard_Project 工程目錄 & 文件介紹


▲ 圖 2.2

  • _MCAL_generate_2M: EB 工具生成的配置文件
  • APP: 示例應用代碼
  • MCAL: 微控制器抽象層
  • MiddleWare:Uart 連接層
  • Source:main.c

 

2.3 _MCAL_generate_2M->include文件夾下Dio_Cfg.h

        我們可以看到在 EB 配置好生成的 LED0、LED1、LED2 宏定義


                                                                                                                                           
                                                                                                                                                 ▲ 圖 2.3


 

2.4  APP -> include文件夾下Bsp_io.c

這是 demo 示例對 MCAL API 的調用


▲ 圖 2.4



三、燒錄 & 調試

 3.1 將工程編譯並燒錄到開發板

觀察 3 顆 LED 已經點亮,(EB 配置這三個 GPIO 初始化狀態為高)


                                                                                                                                           ▲ 圖 3.1


 

四、MCAL MCU 模塊詳解

MCU 模塊提供 mcu 初始化、復位、休眠、系統時鐘配置、外設時鐘配置等功能

4.1 General 配置


▲ 圖 4.1

  • DevErrorDetect:Mcu 模塊開發錯誤檢測使能
  • McuGetRamStateAPI:獲取 MCU RAM 狀態的 API
  • McuInitClockAPI:MCU 時鐘初始化 API
  • McuNoPLL:MCU 鎖相環禁用
  • McuVersionInfoApi :讀取 MCU 模塊版本信息 API
  • McuPerformResetApi:MCU 執行軟復位 API
  • McuCalloutBeforePerformReset:開啟 McuPerformResetApi 後可以使用。通過填寫 McuPerformResetCallout 的回調函數名稱,可以在執行軟復位前進行一些軟體動作
  • McuPerformResetCallout:回調函數名稱

 

4.2 McuResetReasonConf 配置

     獲取 Mcu 復位的原因


                                                                                                                                                     ▲ 圖 4.2

 

4.3 McuClocksettingConfig 配置

       較為複雜,需要配合板載晶振 & Data sheet 時鐘樹進行配置

4.3.1 McuClocksettingConfig-> General :mcu 時鐘監控

▲ 圖 4.3.1

4.3.2 McuClocksettingConfig-> FOSC :外部高速晶振配置

▲ 圖 4.3.2

  • FOSC Enable :時鐘使能
  • FOSC Clock Monitor Enable :時鐘監測器啟用
  • FOSC clock monitor reset Enable :時鐘監控異常復位啟用
  • FOSC Stop Enable: 時鐘停用
  • FOSC Bypass Enable:使用有源晶體時需要勾選

 

4.3.3 McuClocksettingConfig-> SOSC :外部低速晶振配置

▲ 圖 4.3.3

  • SOSC Enable :時鐘使能
  • SOSC Bypass : 使用有源晶體時需要勾選
  • SOSC Monitor Enable :時鐘監測器啟用
  • SOSC monitor reset Enable :時鐘監控異常復位啟用
  • SOSC Frequency(32768HZ): 填入外部低速晶振的時鐘頻率

 

4.3.4 McuClocksettingConfig-> SIRC :內部 12Mhz 低速 RC 振盪器配置



▲ 圖 4.3.4

  • SIRC Monitor Enable :時鐘監測器啟用
  • SIRC Clock Trim Enable :啟用 SIRC 時鐘自動修剪參考時鐘源
  • SIRC Low Power Enable : 時鐘低功耗啟用
  • SIRC Stop Enable   : 使能 CMU0,功能安全時需要
  • SIRC Trim Source: 選擇自動修剪參考的時鐘源

 

4.3.5 McuClocksettingConfig-> SIRC32K :內部 32KHz 低速 RC 振盪器配置

▲ 圖 4.3.5

 

4.3.6 McuClocksettingConfig-> FIRC :內部 96Mhz 高速 RC 振盪器配置

 

▲ 圖 4.3.6

 

  • FIRC Enable:時鐘啟用
  • FIRC Clock Monitor: 時鐘監測器啟用
  • FIRC Clock Trim Enable: 啟用 FIRC 時鐘自動修剪參考時鐘源
  • FIRC Stop Enable: 使能 CMU0,功能安全時需要
  • FIRC Trim Source: 選擇自動修剪參考的時鐘源

 

4.3.7 McuClocksettingConfig-> PLL0 :倍頻器配置

 

▲ 圖 4.3.7

 

  • PLL0 Enable : 時鐘啟用
  • PLL0 Clock Monitor Enable: 時鐘監測器啟用
  • PLL0 Clock Monitor Reset Enable: 時鐘監控異常復位啟用
  • PLL0 Stop Enable : 使能 CMU0,功能安全時需要
  • Mcu PLL0 Source Clock : 選擇 PLL0 的倍頻時鐘源

 

4.3.8 McuClocksettingConfig-> System Clock :系統時鐘配置

▲ 圖 4.3.8

  • System Clock Select:選擇系統時鐘源
  • Bus Clock Monitor :總線時鐘監控啟用
  • SCG ClkOut Select:選擇 CLKOUT 引腳輸出的時鐘源

 

4.3.9 McuClocksettingConfig-> PCC :外設時鐘源配置

▲ 圖 4.3.9

雙擊 Index 可以進入具體外設配置界面如圖 4.3.10 所示,以 FTU0 為例

▲ 圖 4.3.10

  • Mcu Peripheral Name : 選擇外設的名稱
  • Enable peripheral:是否啟用外設時鐘
  • Peripheral clock selection:選擇外設時鐘源
  • Peripheral Clock Divider:用於需要時鐘分配器的外設 分頻係數 1-8
  • Peripheral Clock Frequency:在時鐘源選擇後且外設啟用的情況下,會自動計算該值

 

        4.3.10 McuClocksettingConfig-> Clock Reference Point:外設時鐘參考,需要在配置其他外設時引用它,如 FTU1_CLK、FTU4_CLK 在 GPT 配置中需要手動添加這兩個外設的時鐘(圖5.3.11、圖5.3.12)

▲ 圖 4.3.11

 

▲ 圖 4.3.12

 

4.3.11 McuClocksettingConfig-> SMISC:系統雜散項時鐘配置

▲ 圖 4.3.13

  • McuClkOutConfigure :用於測量時鐘是否配置正確的模塊,可以通過示波器測量 CLK OUT Pin 腳
  • McuAONClkConfigure:低功耗時會用到。如 RTC
  • McuSysCGCConfigure:晶片的雜散時鐘配置使能項

 

4.4 McuModeSettingConf  配置

      MCU 運行模式設置,不需要配置

 ▲ 圖 4.4

 

4.5 McuRamSectorSettingConfig 配置

        MCU RAM 配置在 MCU 上電後,進入 Main 函數前,會在 Start_up 內執行 Ram 初始化,一般不需要配置

▲ 圖 4.5

 

4.6 MCU模塊接口函數

       在 AutoSar 規範中 MCU 模塊的 API 有:Mcu_Init、Mcu_InitClock、Mcu_DistributePllClock、Mcu_GetPllStatus、Mcu_GetResetReason、Mcu_SetMode 等函數。

▲ 圖 4.6.1

 

初始化步驟:

       ①:調用 Mcu_Init 函數,使在 EB 工具中配置的 MCU 模塊初始化

       ②:調用 Mcu_InitClock 函數,初始化 PLL 時鐘以及其他時鐘配置項

       ③:調用 Mcu_GetPllStatus 函數,等待 PLL 的鎖定狀態為 Ture

       ④:調用 Mcu_DistributePllClock 函數,激活 PLL 時鐘到 MCU 時鐘分布

▲ 圖 4.6.2

 

五、MCAL PORT 模塊詳解

PORT 模塊就是 MCU 上的 Pin 腳配置,可以配置為 DIO、ADC、PWM、CAN、ICU、SPI 等引腳復用功能。

5.1  General 配置


▲ 圖 5.1

  • Port Development Error Detect :PORT 模塊開發錯誤檢測使能
  • Port SetPinMode Api:Pin 模式設置的 API 使能
  • Port VersionInfo Api :讀取 PORT 模塊版本信息 API
  • Port SetPinDirection Api:Pin 方向設置 API 使能
  • Port Freeze Jtag And Reset Pins:將 jtag reset 引腳配置不可用,防止錯誤配置導致無法 Debug、復位。

 

5.2 Port Config 配置

5.2.1 Port Config Set 主要對 Port A、B、C、D、E 引腳屬性的定義

▲ 圖 5.2.1

           5.2.2 PortContainer_0 -> PortPin_0 界面

▲ 圖 5.2.2

  • PortPinId: 邏輯上的 Id 值,從 1 遞增
  • PortPin Name:對應晶片手冊的 pin 引腳 ID
  • PortPin Mode Changeable:是否啟用在程序運行過程中更改 PortPin 的模式
  • PortPin Mode: 選擇PortPin用作哪個功能
  • PortPin Pull Enable:是否啟用開漏
  • PortPin Pull Select: 是否啟用上下拉
  • PortPin Direction Changeable: 是否可以在程序運行過程中改變 PortPin 的方向(輸入,輸出)
  • PortPin Direction : PortPin的方向,輸入, 輸出
  • PortPin Level Value:設置PortPin的初始化電平狀態
  • PortPin Drive Strength Enable:引腳驅動能力配置
  • PortPin Slew Rate Enable:引腳轉換速率配置
  • PortPin Passive Filter Enable:是否啟用引腳數字濾波
  • PortPin Initial Mode: 不需要配置
 
5.3 PORT 模塊接口函數


▲ 圖 5.3




六、MCAL DIO 模塊詳解

        DIO (輸入、輸出)模塊是對 MCU 引腳的訪問進行了抽象,並且還可以對引腳進行分組,若使用 MCU 引腳進行輸入輸出控制,則需要先配置 PORT 模塊中的該引腳為 GPIO 模式,再進行 DIO 模塊配置。

        6.1 General 配置

  

▲ 圖 6.1

  • Dio Development Error Detect :DIO 模塊開發錯誤檢測使能
  • Dio Flip Channel Api :引腳翻轉的 API 使能
  • Dio Version Info Api :讀取 Dio 模塊版本信息 API

 

      6.2 DioPort 配置

       一共分為 5 組  index 分別對應 PORT A、B、C、D、E

  

▲ 圖 6.2

 

         6.3 DioPort->idex 0


▲ 圖 6.3

        點擊 + 可以添加一個 DioChannel Index 0 ,雙擊進入 Index 0 進行引腳名稱 & 引腳位號的配置,如圖3.2 所示

 

6.4 DIO 模塊配置生成 Mcal 代碼

        在 EB 工具配置 DIO 模塊生成 Mcal 代碼後、 DIO 模塊中的的 name、Dio channel id 都會 Dio_Cfg.h文件中通過宏定義進行關聯起來如下圖所示:

▲ 圖 6.4

 

6.5 DIO 模塊常用接口函數

        在 AutoSar 規範中 Dio模塊的 API 有:Dio_ReadChannel、Dio_WriteChannel、Dio_FlipChannel,分別為 讀、寫、翻轉通道的功能。

▲ 圖 6.5



七、總結

        本文以點亮 LED 燈為示例介紹了有關 MCU 、PORT、DIO 相關模塊的配置並進行了模塊講解,其中 MCU 模塊最複雜的就是時鐘配置,需要結合晶片手冊去實現。

 

八、參考文獻

(1)  AUTOSAR_SWS_PortDriver.pdf

(2)  FC4150 Reference Manual V3.0.pdf


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

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


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


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

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

評論