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

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

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

國(guó)產(chǎn)APM32F103ZET6替換STM32F103ZET6經(jīng)驗(yàn)分享

21克888 ? 來(lái)源:廠(chǎng)商供稿 ? 2022-06-08 11:43 ? 次閱讀

隨著大變局時(shí)代的開(kāi)啟,美國(guó)對(duì)中國(guó)科技的打壓,對(duì)中國(guó)芯片的鎖脖,ST芯片價(jià)格的一再高漲,直接推動(dòng)了國(guó)產(chǎn)芯片的發(fā)展。國(guó)內(nèi)很多廠(chǎng)家也開(kāi)始推出高性能、低價(jià)格的對(duì)標(biāo)ST產(chǎn)品。由于價(jià)格問(wèn)題,我也不得不考慮更換芯片,看了一些測(cè)評(píng),有人推薦這一款A(yù)PM32的單片機(jī),價(jià)格比ST同型號(hào)的便宜,果斷下單,以下是我使用APM32F103ZET6替換STM32F103ZET6的一些分享,參考了網(wǎng)上各路大神的資料后作的總結(jié)。

1從手冊(cè)中分析資源,基礎(chǔ)信息一模一樣

1.1引腳定義

由下圖可以看出相同封裝的引腳分布完全一致。





1.2結(jié)構(gòu)框圖

(1)都是M3內(nèi)核,總體與STM32F103ZET6架構(gòu)一致
外設(shè)上做了部分增加,APM32F103相較于STM32F103增加了I2C3和I2C4模塊,還增加了動(dòng)態(tài)存儲(chǔ)控制器DMC,可外接SDRAM。

(2)多了EMMC
APM32F103有一個(gè)特別的功能,它有EMMC(外部存儲(chǔ)器控制器),因此可以外接SDRAM,這使它可以存儲(chǔ)大量臨時(shí)數(shù)據(jù),提升讀取速度。如果不想外接也有SDRAM,APM32F103也有合封型號(hào)——APM32F103VCTxS。

(3)多了個(gè)FPU
如果在處理一些浮點(diǎn)數(shù)據(jù)的數(shù)學(xué)運(yùn)算時(shí),比如sin運(yùn)算,使用FPU可以加快運(yùn)算速度;STM32F103ZET6是沒(méi)有的,因此在替換過(guò)程中,如果使用FPU,且使用了APM32F103ZET6官方提供的浮點(diǎn)運(yùn)算庫(kù),注意算法中數(shù)據(jù)處理的效率是有很大提升的。

但是APM32F103ZET6的FPU有些不好的地方是,只對(duì)庫(kù)中的數(shù)學(xué)運(yùn)算有明顯(提升至少5倍)加速效果,其它的運(yùn)算無(wú)明顯加速效果。

(4)多了個(gè)USB
STM32F103ZET6的CAN和USB共用一段SRAM,因此使用USB時(shí)可以使用CAN。




1.3存儲(chǔ)地址映射

經(jīng)過(guò)對(duì)比下面兩圖可以得出,基本外設(shè)地址都是一致的,對(duì)于多出的功能都占用了ST原來(lái)的保留地址,這說(shuō)明APM32F103是可以完全兼容STM32F103的。




1.4時(shí)鐘樹(shù)

在某些應(yīng)用場(chǎng)景需要超頻使用(官方是不保證的),當(dāng)系統(tǒng)時(shí)鐘為96MHz、120MHz下,STM32F103ZET6的USB無(wú)法配置到48MHz,因此無(wú)法使用USB。但是APM32F103ZET6通過(guò)配置分頻系數(shù),當(dāng)系統(tǒng)時(shí)鐘為96MHz、120MHz時(shí),依然可以使用USB.

1.5最小系統(tǒng)電路

電源、時(shí)鐘、復(fù)位、燒錄接口、Boot電路一致。

2用STM32F103xE的Keil工程、代碼燒錄到APM32F103xE中,實(shí)現(xiàn)基本燒錄功能

在調(diào)試過(guò)程中使用的板子是APM32F103ZET6的mini板,使用的Keil工程是野火的例程。

2.1編譯工具

與ST完全相同,都可以使用keil和IAR。

2.2燒錄器

兼容ST,可以使用ST-LINK,還可以使用J-LINK和APEX-LINK。

2.3燒錄接口

支持JTAG和SWD。

2.4編譯下載

隨便找一個(gè)野火的STM32F103的代碼例程,驗(yàn)證一下不修改任何配置和ST的代碼是否可以直接燒錄使用


打開(kāi)工程后點(diǎn)擊魔術(shù)棒,板子還是選擇STM32F103VE


接下來(lái)選擇自己使用的燒錄器,這里我用的是J-LINK


進(jìn)入setting,設(shè)置flashdownload,還是添加對(duì)應(yīng)型號(hào)的ST芯片


以上就配置結(jié)束了,然后再將例程里LED的引腳PB0和PB1修改成APM32103的LED引腳PE6和PE5





全部修改完成了,編譯下載后,兩個(gè)LED交替閃爍,說(shuō)明驗(yàn)證成功,不用修改其他配置,選擇好燒錄器,直接燒錄ST代碼是可以使用的。

2.5脫機(jī)編程器

市場(chǎng)上買(mǎi)的量產(chǎn)燒錄器品牌(可以百度、淘寶搜索)有:周立功、希爾特、軒微、芯園、野火等,有些燒錄器添加了AMP32F103ZET6的型號(hào),有些沒(méi)有。

本人只有芯園的燒錄器,選擇STM32F103ZET6的型號(hào)是可以燒錄APM32F103ZET6。

至于其它的燒錄器能否選擇STM32F103ZET6的型號(hào)燒錄APM32F103ZET6呢,由于沒(méi)有燒錄器,因此暫時(shí)無(wú)結(jié)論,后續(xù)有機(jī)會(huì)使用時(shí)再補(bǔ)充。

不過(guò)AMP32F103ZET6有官方的脫機(jī)編程器。

2.6JTAG ID不同

具體差異如下:

(1)APM32F103ZET6的信息如下:


(2)STM32F103ZET6的信息如下:


如果代碼中有使用JTAG ID作為判斷信息的話(huà),在替換過(guò)程中會(huì)出問(wèn)題。

3參數(shù)電氣特性的差異

在使用過(guò)程中,我們發(fā)現(xiàn)APM32F103ZE和STM32F103ZE的參數(shù)和電氣特性不一樣,在這種情況下,我們可能會(huì)遇到一些問(wèn)題,以下通過(guò)手冊(cè)對(duì)比總結(jié)了一些模塊的差異。

3.1時(shí)鐘

3.1.1溫度、電壓的環(huán)境引起HSI的精度差異

APM32的主頻標(biāo)稱(chēng)為96MHz,STM32的主頻標(biāo)稱(chēng)為72MHz;在高低溫情況下,HSI作為時(shí)鐘源時(shí),APM32的時(shí)鐘精度在(-2.8~2.4)%,但STM32的時(shí)鐘精度在(-2.0~2.5)%,比APM32略高。

如果使用HSI作為系統(tǒng)時(shí)鐘,且對(duì)精度要求較高、使用場(chǎng)景是;如果使用場(chǎng)景是3.3V的工作電壓,且溫度為25℃時(shí),出廠(chǎng)精度都是±1%。

3.1.2HSE起振時(shí)間差異引起系統(tǒng)時(shí)鐘配置存在差異

在使用晶振作為HSE的時(shí)鐘源時(shí),APM32F103和STM32F103的起振溫度時(shí)間存在差異,STM32F103起振穩(wěn)定時(shí)間比APM32F103的快。

代碼中判斷是否起振穩(wěn)定的方式是使用軟件延時(shí)等待,設(shè)置的HSE_STARTUP_TIMEOUT數(shù)值是0x500,參考代碼如下:




當(dāng)晶振離開(kāi)MCU的晶振連接引腳較遠(yuǎn),或者匹配電容不合理,或者使用貼片晶振而不是直插晶振時(shí),HSE_STARTUP_TIMEOUT的等待穩(wěn)定時(shí)間不足以使晶振起振,會(huì)出現(xiàn)無(wú)法起振的情況,導(dǎo)致系統(tǒng)時(shí)鐘為HSI的8MHz。

另外一方面,代碼運(yùn)行的速率差異,也會(huì)影響軟件延時(shí)等待的實(shí)際時(shí)間。

解決方法是調(diào)大HSE_STARTUP_TIMEOUT,例如設(shè)置HSE_STARTUP_TIMEOUT為0x5000

3.2FLASH

3.2.1APM32F103xE的頁(yè)擦?xí)r間、片擦?xí)r間、寫(xiě)時(shí)間比STM32F103xE的快

通過(guò)對(duì)比兩種芯片的數(shù)據(jù)手冊(cè),我發(fā)現(xiàn)兩者的Flash的性能參數(shù)有點(diǎn)區(qū)別:
(1)APM32的頁(yè)擦除時(shí)間是2.7~3.5ms,STM32是20~40ms,比STM32快約7倍。
(2)APM32的16bit編程時(shí)間是33.7~40.5us,STM32是40~70us,比STM32快約20%。

如果運(yùn)行的代碼中存在軟件延時(shí)等待擦寫(xiě)時(shí)間,注意調(diào)整代碼。

3.2.2Flash等待周期的配置差異

手冊(cè)中系統(tǒng)頻率與訪(fǎng)問(wèn)Flash等待時(shí)間關(guān)系如下(見(jiàn)用戶(hù)手冊(cè)):
(1)STM32F103ZET6的手冊(cè)



(2)APM32F103ZET6的手冊(cè)


然而兩家的Flash訪(fǎng)問(wèn)速度也不同,有時(shí)候不會(huì)安嚴(yán)格的按照手冊(cè)配置,例如在自己編寫(xiě)代碼配置系統(tǒng)時(shí)鐘為48MHz時(shí)、Flash預(yù)取使能、等待周期設(shè)置為0時(shí),就發(fā)現(xiàn)STM32F103ZET6可以正常工作,APM32F103ZET6就不能正常工作。

因此,在配置該參數(shù)時(shí),建議還是嚴(yán)格按照官網(wǎng)提供的參數(shù)配置。

PS:我看了極海官網(wǎng)上的FAQ,發(fā)現(xiàn)有些人因?yàn)榈却芷诓粔蚨霈F(xiàn)很多錯(cuò)誤,所以大家一定要盡量按照手冊(cè)上的選擇等待周期的個(gè)數(shù)!不確定夠不夠的,可以先設(shè)置多一個(gè),畢竟“多多益善”嘛~

3.2.3Flash擦寫(xiě)過(guò)程中關(guān)閉中斷

在網(wǎng)上看到,APM32F103ZET6在執(zhí)行擦寫(xiě)Flash時(shí),最好先關(guān)閉中斷,否則可能擦寫(xiě)Flash失?。▊€(gè)人沒(méi)有遇到過(guò)這個(gè)問(wèn)題),而STM32F103ZET6則不需要,

3.3功耗

APM32F103較STM32F103相比,運(yùn)行、睡眠、停機(jī)功耗較小,待機(jī)功耗較大,但都是在10uA以下,電池功耗基本一致。

如果是電池供電、且運(yùn)行模式占用的運(yùn)行時(shí)間較多,使用APM32F103ZET6的工作時(shí)間是比STM32F103ZET6的工作時(shí)間長(zhǎng)。如果產(chǎn)時(shí)間在低功耗模式運(yùn)行,工作時(shí)長(zhǎng)則反之。

3.4GPIO

3.4.1GPIO配置為浮空輸入的抗干擾能力

眾所周知,在使用GPIO時(shí),應(yīng)配置相應(yīng)的GPIO工作模式(見(jiàn)用戶(hù)手冊(cè))。
但是在用作EXTI或是USART_Rx時(shí),GPIO被配置為浮空輸入模式后,發(fā)現(xiàn)無(wú)法讀取穩(wěn)定電平,這是怎么一回事呢?

原來(lái),APM32F103的GPIO在用作浮空輸入或復(fù)用推挽輸出時(shí),容易受到外界影響,導(dǎo)致讀取或輸出異常,此時(shí)有兩個(gè)解決方案:
①換一種工作模式,通過(guò)軟件修改成上拉輸入或推挽輸出;
②電壓容易受到干擾,那就外接一個(gè)上拉電阻,讓電平變穩(wěn)定。

3.5USBD與CAN共用

這是一個(gè)很驚喜的發(fā)現(xiàn)——APM32F103可以同時(shí)使用USBD和CAN!但是如果要實(shí)現(xiàn)這個(gè)目的,需要把CAN重新映射到復(fù)用引腳,此時(shí)是USBD2與CAN共用。
是的沒(méi)錯(cuò),APM32F103有兩個(gè)USBD,但是由于兩個(gè)USBD公用引腳、地址、寄存器、時(shí)鐘,所以相當(dāng)于只有一個(gè)USBD,只有在需要同時(shí)使用USBD和CAN時(shí),才啟用USBD2。

這里有兩個(gè)使用的注意點(diǎn):
①在USBD2的基地址偏移0x1000處寫(xiě)0x0000 0001
②PA11和PA12引腳給USBD2使用,CAN使用其他引腳

3.6運(yùn)行代碼的速度有差異

相信有不少人都會(huì)用for或while循環(huán)做延時(shí),但是在實(shí)際運(yùn)用時(shí),發(fā)現(xiàn)軟件延時(shí)在時(shí)間的精度上會(huì)有誤差。

由此可見(jiàn),APM和STM的芯片在代碼的執(zhí)行速度上有差異,大家千萬(wàn)別把用在STM的延時(shí)循環(huán)直接套在A(yíng)PM上!可能會(huì)因?yàn)閱?dòng)時(shí)間不夠長(zhǎng)而導(dǎo)致系統(tǒng)時(shí)鐘頻率不對(duì)(別問(wèn)我怎么知道的,血的教訓(xùn)[狗頭])。

當(dāng)然,用定時(shí)器或者直接用時(shí)鐘周期做精準(zhǔn)定時(shí)的話(huà),那就noproblem了~

3.7Boot0引腳接地問(wèn)題

正常情況下,從主存儲(chǔ)區(qū)(用戶(hù)Flash,地址為0x0800 0000)啟動(dòng),Boot0是必現(xiàn)接GND的。但是在查閱網(wǎng)上資料時(shí),發(fā)現(xiàn)STM32F103ZET6的Boot0不接GND也能穩(wěn)定從主存儲(chǔ)區(qū)啟動(dòng),APM32F103ZET6無(wú)法穩(wěn)定從主存儲(chǔ)區(qū)啟動(dòng),有時(shí)候可以、有時(shí)候不能。

在實(shí)際應(yīng)用中,如果是從主存儲(chǔ)區(qū)啟動(dòng),還是安安心心的按照官方的推薦將GND通過(guò)10kΩ電阻下拉到GND。

4總結(jié)

以上是在mini板上編寫(xiě)了簡(jiǎn)單的測(cè)試代碼,且在網(wǎng)上搜集、整理了資料進(jìn)行分析,STM32F103ZET6有的功能、APM32F103ZET6也有,而且APM32F103ZET6額外比STM32F103ZET6多了些功能。

初步判斷在不需要修改硬件、少量修改軟件(看具體使用了哪些模塊、哪些應(yīng)用場(chǎng)景)的情況下,可以使用APM32F103ZET6是可以替換STM32F103ZET6,另外,APM32F103ZET6在價(jià)格、供貨上也有優(yōu)勢(shì),國(guó)產(chǎn)真的太香了,兄弟們還猶豫什么快下手。

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

    關(guān)注

    2

    文章

    243

    瀏覽量

    29610
  • ST芯片
    +關(guān)注

    關(guān)注

    0

    文章

    5

    瀏覽量

    5182
  • 中國(guó)科技
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    2443
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    [3.2.1]--STM32F103ZET6的時(shí)鐘結(jié)構(gòu)

    時(shí)鐘STM32F103ZET6
    李開(kāi)鴻
    發(fā)布于 :2022年11月12日 03:15:07

    怎樣用GD32F103ZET6替換STM32F103ZET6芯片呢

    怎樣用GD32F103ZET6替換STM32F103ZET6芯片呢?有哪些操作流程呢?
    發(fā)表于 10-22 06:51

    STM32F103ZET6紅牛電路圖

    STM32F103ZET6紅牛電路圖:
    發(fā)表于 09-14 15:29 ?2075次下載
    <b class='flag-5'>STM32F103ZET6</b>紅牛電路圖

    STM32F103ZET6 V3.0核心板電路圖

    STM32F103ZET6 V3.0核心板電路圖。
    發(fā)表于 10-29 17:00 ?59次下載

    基于STM32F103ZET6示波器程序

    基于STM32F103ZET6示波器程序 非常好的源代碼
    發(fā)表于 12-29 17:25 ?225次下載

    STM32F103ZET6原理圖+PCB文件

    STM32F103ZET6的詳細(xì)資料,原理圖及PCB圖。
    發(fā)表于 05-10 15:12 ?0次下載

    STM32F103ZET6數(shù)據(jù)手冊(cè)

    STM32F103ZET6、芯片學(xué)習(xí)資料、資料齊全,全面介紹了STM32F103ZET6芯片,覆蓋范圍廣。
    發(fā)表于 05-13 15:39 ?739次下載

    stm32f103zet6電路圖

    stm32f103zet6電路圖,有需要的都可以看看。
    發(fā)表于 07-20 15:48 ?66次下載

    STM32F103ZET6最小系統(tǒng)原理圖和PCB

    STM32F103ZET6最小系統(tǒng)原理圖和PCB
    發(fā)表于 08-24 17:42 ?333次下載

    STM32F103ZET6網(wǎng)絡(luò)開(kāi)發(fā)板原理圖

    STM32F103ZET6網(wǎng)絡(luò)開(kāi)發(fā)板原理圖
    發(fā)表于 10-27 09:19 ?110次下載
    <b class='flag-5'>STM32F103ZET6</b>網(wǎng)絡(luò)開(kāi)發(fā)板原理圖

    STM32f103zet6使用庫(kù)函數(shù)點(diǎn)亮一個(gè)LED

    STM32f103zet6使用庫(kù)函數(shù)點(diǎn)亮一個(gè)LED
    發(fā)表于 05-22 10:34 ?119次下載
    <b class='flag-5'>STM32f103zet6</b>使用庫(kù)函數(shù)點(diǎn)亮一個(gè)LED

    stm32f103zet6stm32f103vct6的區(qū)別

    stm32f103zet6stm32f103vct6的區(qū)別1、STM32F系列屬于中低端的32位ARM微控制器,該系列芯片是意法半導(dǎo)體(ST)公司出品,其內(nèi)核是Cortex-M3?! ∑渲?/div>
    發(fā)表于 12-02 15:21 ?39次下載
    <b class='flag-5'>stm32f103zet6</b>與<b class='flag-5'>stm32f103vct6</b>的區(qū)別

    STM32F103ZET6——控制LED燈

    STM32F103ZET6——控制LED燈
    發(fā)表于 12-03 21:06 ?135次下載
    <b class='flag-5'>STM32F103ZET6</b>——控制LED燈

    STM32F103ZET6 - USB_HID -2 (IAP升級(jí))

    *STM32F103ZET6 - USB_HID -2 (IAP升級(jí))示例詳解: (參考 : https://blog.csdn.net/u014803614/article/details
    發(fā)表于 12-16 16:58 ?37次下載
    <b class='flag-5'>STM32F103ZET6</b> - USB_HID -2 (IAP升級(jí))

    STM32F103ZET6 IAP超級(jí)終端

    STM32F103ZET6 IAP 超級(jí)終端資料分享
    發(fā)表于 11-21 15:24 ?10次下載