91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32F103移植到AT32F403A之MDK(二)

創(chuàng)易棧 ? 來源:創(chuàng)易棧 ? 2023-01-29 15:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

上一篇我們已經(jīng)實現(xiàn)了不改硬件,只改軟件情況下將STM32F103C8T6替換為AT32F403ACGT7的過程,但畢竟STM32F103C8T6已經(jīng)是10多年前的東西了,用現(xiàn)在的AT32F403ACGT7替換實在是大材小用了,畢竟這顆是主頻能到240M的M4。

上篇我們解決了替換能用的問題,本篇我們來結(jié)合AT32F403ACGT7的優(yōu)勢,實現(xiàn)不改硬件只改BOM降成本的方法。

從接觸MCU開始,MCU外圍電路中就缺少不了很重要的器件,那就晶振,晶振是MCU的時鐘源。隨著技術(shù)的不斷發(fā)展,越來越多的MCU將晶振集成到了MCU內(nèi)部,但集成到內(nèi)部后真的就能夠省略掉外部晶振嗎,當然不是,由于技術(shù)和工藝問題,前些年的MCU還無法完全擺脫外部晶振,而近幾年的MCU才算真正能夠擺脫外部晶振,STM32F103系列和AT32F403A系列正好代表了這兩個階段的產(chǎn)品。

我們先來看看STM32F103系列內(nèi)部晶振的參數(shù)

4bd82378-9bce-11ed-bfe3-dac502259ad0.png

蕩器精度大多數(shù)情況下都大于1%,最大時大于了2%,用在串口應用中都覺得不靠譜,更何況是在USB應用當中了,所以,官方文檔對使用內(nèi)部晶振時做了明確的使用說明:

4bf9bb50-9bce-11ed-bfe3-dac502259ad0.png

我們再來看看AT32F403A系列的內(nèi)部晶振參數(shù)

4c23d28c-9bce-11ed-bfe3-dac502259ad0.png

4c23d28c-9bce-11ed-bfe3-dac502259ad0.png

在使用RCC_CTRL寄存器校準情況下,能夠達到最大值偏差1%的精度,已經(jīng)能夠滿足大多數(shù)的精度要求,RCC_CTRL寄存器校準是在系統(tǒng)啟動后自動完成的,不需要人為干預,如果想再提到精度,可以再修改相關(guān)寄存器,以提高到更高的精度。

4c58b236-9bce-11ed-bfe3-dac502259ad0.png

并且在USB應用中,為保證內(nèi)部晶振能夠滿足精度要求,還提供了ACC校準功能,可以提高進度到0.25%。

4c856df8-9bce-11ed-bfe3-dac502259ad0.png

4cb13c4e-9bce-11ed-bfe3-dac502259ad0.png

4cb13c4e-9bce-11ed-bfe3-dac502259ad0.png

在這些校準方式下,AT32F403A系列的內(nèi)部晶振已經(jīng)能都替換掉外部晶振了。另外,在省略掉外部晶振后,還能夠讓芯片多出2個IO腳,在ST32F103系列中,使用內(nèi)部晶振時空出的2個管腳只能做IO用,沒有中斷功能,而AT32F403A系列則沒有這個限制。

4d16d478-9bce-11ed-bfe3-dac502259ad0.png

接下來,本篇內(nèi)容的重點就是在使用ST32F103標準庫情況下最小的改動實現(xiàn)開啟AT32F403A內(nèi)部晶振,讓BOM成本降低,并且增加了性能。在上一篇中我在標準庫的系統(tǒng)時鐘初始化函數(shù)void SystemInit (void)內(nèi)添加的開啟FPU代碼。

4d401996-9bce-11ed-bfe3-dac502259ad0.png

同樣在這個函數(shù)內(nèi)還有一行代碼SetSysClock(),它負責設(shè)置系統(tǒng)內(nèi)的各條總線時鐘。STM32這里一般是設(shè)置使用外部晶振,總線時鐘為72M。

4d607006-9bce-11ed-bfe3-dac502259ad0.png

因為我們要使用內(nèi)部晶振,所以要將外部晶振相關(guān)的宏定義關(guān)掉,這里我們只需將#define SYSCLK_FREQ_72MHz 72000000關(guān)掉即可。

4d7c037a-9bce-11ed-bfe3-dac502259ad0.png

這樣所有和外部晶振相關(guān)的時鐘配置都將關(guān)閉,總線時鐘將被配置為內(nèi)部時鐘。

4d95772e-9bce-11ed-bfe3-dac502259ad0.png

因為原來的程序都是建立在總線時鐘是72M情況下的,我們需要使用內(nèi)部晶振重新創(chuàng)建各個總線的時鐘與原程序的總線時鐘一致,才能保證系統(tǒng)能夠正常運行。

我們在AT32F402A系列的BSP的system_at32f4xx.c文件內(nèi)找到#define SYSCLK_FREQ_72MHz_HSI 72000000所對應的函數(shù),這個函數(shù)內(nèi)實現(xiàn)了再使用內(nèi)部晶振情況下,配置總線為72M的操作(注意,BSP要用1.xx版本的,2.xx版本的庫風格改變了,不再兼容STM32標準庫風格)。

因為原來的程序都是建立在總線時鐘是72M情況下的,我們需要使用內(nèi)部晶振重新創(chuàng)建各個總線的時鐘與原程序的總線時鐘一致,才能保證系統(tǒng)能夠正常運行。

我們在AT32F402A系列的BSP的system_at32f4xx.c文件內(nèi)找到#define SYSCLK_FREQ_72MHz_HSI 72000000所對應的函數(shù),這個函數(shù)內(nèi)實現(xiàn)了再使用內(nèi)部晶振情況下,配置總線為72M的操作(注意,BSP要用1.xx版本的,2.xx版本的庫風格改變了,不再兼容STM32標準庫風格)。

4da9695a-9bce-11ed-bfe3-dac502259ad0.png

4dbfe45a-9bce-11ed-bfe3-dac502259ad0.png

4dd902a0-9bce-11ed-bfe3-dac502259ad0.png

將static void SetSysClockTo72MHSI(void)函數(shù),拷貝到現(xiàn)在的代碼中(位置根據(jù)自己習慣),我放在main函數(shù)這里。

4df80a60-9bce-11ed-bfe3-dac502259ad0.png

4df80a60-9bce-11ed-bfe3-dac502259ad0.png

由于缺少宏定義和寄存器名差異問題,會有很多報錯,先不管,先將函數(shù)內(nèi)精簡一下,只保留我們使用型號的先關(guān)定義。

4e2cd39e-9bce-11ed-bfe3-dac502259ad0.png

然后我們對照STM32F103的參考手冊和AT32F403A的參考手冊中關(guān)于RCC寄存器的名稱定義,用STM32F103的寄存器名和宏定義替換AT32F403A的寄存器名和宏定義,修改后名稱后如下:

4e5e5838-9bce-11ed-bfe3-dac502259ad0.png

依然報錯的位置是因為這3個宏是STM32F103庫里沒有定義的,需要我們重新定義一下,我們可以在AT32F403A的BSP庫里找到,拷貝過來就行。

4e82b232-9bce-11ed-bfe3-dac502259ad0.png

接下來我們將SetSysClockTo72MHSI();添加的main函數(shù)開始的位置,也就是實現(xiàn)了原來void SystemInit (void)內(nèi)SetSysClock();的工作。

4ea95b4e-9bce-11ed-bfe3-dac502259ad0.png

4ea95b4e-9bce-11ed-bfe3-dac502259ad0.png

重新編譯,沒有錯誤。

4ece4cf6-9bce-11ed-bfe3-dac502259ad0.png

至此,使用AT32F403A內(nèi)部晶振替換原STM32F103外部晶振的配置就完成了,省去了外部晶振和電容,增加了2個能實現(xiàn)中斷的管腳,實現(xiàn)了通過修改BOM降低層本增加性能的目的。

注意:在這種配置下,多數(shù)外設(shè)模塊是能夠正常工作的,但部分外設(shè)會有問題,我會再后面的文章中繼續(xù)為大家分享相關(guān)的問題。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    147

    文章

    18924

    瀏覽量

    398025
  • STM32F103
    +關(guān)注

    關(guān)注

    34

    文章

    495

    瀏覽量

    67688
  • MDK
    MDK
    +關(guān)注

    關(guān)注

    4

    文章

    211

    瀏覽量

    33640

原文標題:STM32F103移植到AT32F403A之MDK(二)

文章出處:【微信號:創(chuàng)易棧,微信公眾號:創(chuàng)易棧】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    CW32L012與STM32F103的三角運算性能對比

    ? ?CW32L012和STM32F103在定位和性能上差異顯著,在三角函數(shù)的運算性能上的對比亦非常直觀。 一、 硬件架構(gòu)對比(性能基礎(chǔ)) 芯片型號 CW32L012C8 STM32F103
    的頭像 發(fā)表于 12-29 15:32 ?2305次閱讀
    CW32L012與<b class='flag-5'>STM32F103</b>的三角運算性能對比

    【新品上市】華清遠見AIoT實戰(zhàn)平臺-STM32F103&amp;amp;ESP32-S3 AI開發(fā)板套件,玩轉(zhuǎn)小智AI桌寵機器狗智能車等項目

    :以ESP32-S3作為AI中樞,承擔視覺識別、語音交互及WiFi/BLE無線通信任務;以STM32F103作為控制核心,實現(xiàn)實時運動控制與多傳感器數(shù)據(jù)融合,者通過UAR
    的頭像 發(fā)表于 11-03 16:18 ?1338次閱讀
    【新品上市】華清遠見AIoT實戰(zhàn)平臺-<b class='flag-5'>STM32F103</b>&amp;amp;ESP32-S3 AI開發(fā)板套件,玩轉(zhuǎn)小智AI桌寵機器狗智能車等項目

    CPPDEFINES = [\'STM32F103xB\']如何選擇?

    移植時SConscript中 CPPDEFINES = [‘STM32F103xB’]如何選擇目標芯片:STM32F103VC
    發(fā)表于 10-11 12:56

    AT32F403A 移植RT-thread時SPI DMA和I2C DMA 沖突怎么解決?

    開發(fā)板:AT-START-F403A V1.1 我使用官方標準版RT-Thread BSP里的工程時,通過ENV工具啟用了SPI和I2C ,但是啟用了SPI RX/TX DMA之后I2C 就會
    發(fā)表于 10-10 06:14

    MH32F103A系列單片機的功能特性

    MH32F103A是一款硬件完美兼容ST32的國產(chǎn)32位單片機,使用高性能的ARM Cortex-M3 內(nèi)核,最高工作頻率216 MHz。內(nèi)置最大512K Flash,96K Sram存儲器。MH32F103A 軟硬件兼容STM32F1
    的頭像 發(fā)表于 09-12 10:58 ?1116次閱讀
    MH32<b class='flag-5'>F103A</b>系列單片機的功能特性

    AT32F403A硬件I2C與從機通信

    示例目的 演示AT32F403A硬件I2C與從機通信。 注:本應用筆記對應的代碼是基于雅特力提供的V2.x.x 板級支持包(BSP)而開發(fā),對于其他版本BSP,需要注意使用上的區(qū)別。 支持
    發(fā)表于 09-10 16:59

    STM32F103長時間運行,串口發(fā)送失敗怎么解決?

    STM32F103長時間運行,串口發(fā)送失敗,目前定位一致卡在USART_FLAG_TC判斷那里,我們采用輪詢的方式發(fā)送數(shù)據(jù),然后判斷USART_FLAG_TC是否發(fā)送成功,在大量發(fā)送后出現(xiàn)了一次發(fā)送后USART_FLAG_TC沒有置位,然后就一直卡在這里了,這可如何是好
    發(fā)表于 07-30 07:55

    STM32F103c8上做DLQR最優(yōu)控制算法的C編程資料

    這是我近期做的一個項目--基于STM32F103c8的DLQR控制算法的C編程,涉及DLQR最優(yōu)控制算法、嵌入式STM32F103編程、CMSIS-DSP庫使用。? ??附有完整的程序。
    發(fā)表于 07-23 15:30 ?0次下載

    MH32F103A系列單片機產(chǎn)品概述

    MH32F103A系列單片機軟硬件兼容STM32F103A系列,可以快速替換,同時強化許多功能。性能和價格都非常的有優(yōu)勢。
    的頭像 發(fā)表于 07-21 15:45 ?1316次閱讀
    MH32<b class='flag-5'>F103A</b>系列單片機產(chǎn)品概述

    STM32F103驅(qū)動LD3320語音識別模塊

    本文介紹了如何使用STM32F103微控制器驅(qū)動LD3320語音識別模塊,該模塊具備非特定人語音識別功能,支持動態(tài)編輯關(guān)鍵詞,且無需額外Flash和RAM。通過SPI接口連接并配置代碼,實現(xiàn)在不同指令下執(zhí)行相應操作,如流水燈、閃爍等。實驗結(jié)果顯示,STM32能成功識別并響
    的頭像 發(fā)表于 06-28 14:16 ?1630次閱讀
    <b class='flag-5'>STM32F103</b>驅(qū)動LD3320語音識別模塊

    STM32F103C6T6 DCAC逆變器原理圖

    STM32F103C6T6 DCAC逆變器原理圖
    發(fā)表于 05-19 17:48 ?2次下載

    CS32F103RB有無驅(qū)動例程,是否可用stm32F103的驅(qū)動代碼?

    如果不能使用stm32F103驅(qū)動的話,請把驅(qū)動例程發(fā)送1830665518@qqcom
    發(fā)表于 05-15 10:54

    stm32f103c8t6主控芯片無人機原理圖

    stm32f103c8t6主控芯片無人機原理圖
    發(fā)表于 04-29 17:02 ?3次下載

    STM32F103x8 STM32F103xB單片機數(shù)據(jù)手冊

    STM32F103x8STM32F103xB單片機數(shù)據(jù)手冊
    發(fā)表于 04-14 14:55 ?8次下載

    STM32F103×8/STM32F103×B MCU手冊

    本文提供了STM32F103x8和STM32F103xB中密度高性能系列微控制器的訂購信息和機械器件特性。有關(guān)整個STMicroelectronics STM32F103xx系列的更多信息,請
    發(fā)表于 03-18 16:37 ?0次下載