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

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

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

STM32開發(fā)何使用STVP后就無法正常工作了

MCU開發(fā)加油站 ? 來源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-04-24 08:47 ? 次閱讀

前言

目前很多用戶在使用 STM8 的時(shí)候使用了 16MHz 的內(nèi)部振蕩或者外部晶體來作為時(shí)鐘源。事實(shí)上,STM8 家族中有些系列是支持最高 24MHz 主頻的,比如 STM8S207、STM8AF52,等等。那么,需要更快的運(yùn)行速度時(shí),是否只需要使用更高的主頻就可以直接運(yùn)行了呢?

問題

某客戶在其產(chǎn)品的設(shè)計(jì)中,使用了 STM8AF52A9。客戶工程師稱其一段以前已經(jīng)驗(yàn)證過的代碼,使用 STVP 下載后無法正常運(yùn)行。但是他試過在 IAR for STM8 中是可以正常調(diào)試的,不知道為何使用 STVP 后就無法正常工作了呢?

調(diào)研

1.了解問題

使用編譯好的.s19 文件使用 STVP 燒寫到 STM8AF52A9,發(fā)現(xiàn)上電后是無法正常工作的。觀察用戶代碼,在 IAR 中進(jìn)入調(diào)試狀態(tài),可以斷點(diǎn)調(diào)試,單步調(diào)試,都可以。不過,最后發(fā)現(xiàn)在線調(diào)試時(shí),一旦運(yùn)行到以下代碼時(shí),程序就死掉了。

status = CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSE, DISABLE,CLK_CURRENTCLOCKSTATE_DISABLE);

2.分析問題

STM8 上電后默認(rèn)的主時(shí)鐘源為內(nèi)部 HSI RC 時(shí)鐘的 8 分頻,即 fHSI/8。原因是 HSI 時(shí)鐘的穩(wěn)定時(shí)間短,而 8 分頻可保證系統(tǒng)在較差的 VDD條件下安全啟動(dòng)。等主時(shí)鐘源穩(wěn)定后,用戶可以自行將主時(shí)鐘切換到其他時(shí)鐘源上。

先來看一下剛才這個(gè)函數(shù)的原型:

ErrorStatus CLK_ClockSwitchConfig(CLK_SwitchMode_TypeDef CLK_SwitchMode,CLK_Source_TypeDef CLK_NewClock, FunctionalState ITState, CLK_CurrentClockState_TypeDefCLK_CurrentClockState)

它的作用在于切換時(shí)鐘源。CLK_SwitchMode 代表使用的切換方式,有自動(dòng)切換和手動(dòng)切換;CLK_NewClock 代表新的時(shí)鐘源;ITState 代表是否使能或禁用中斷;CLK_CurrentClockState 代表切換后原時(shí)鐘源的狀態(tài)是否保持或關(guān)閉。所以,用戶代碼的意思就是:使用自動(dòng)切換方式,切換主時(shí)鐘到 HSE,不產(chǎn)生中斷,切換后原主時(shí)鐘源關(guān)閉。

切換主時(shí)鐘源后程序就出問題這種情況,看來問題很可能出在 HSE 上,必須對(duì)外部晶振進(jìn)行檢測。原本思考是否 HSE 外部晶體的振蕩是否存在什么問題,但是在使用示波器進(jìn)行檢測后發(fā)現(xiàn) HSE 已經(jīng)是在正常的振蕩當(dāng)中了,而且波形很漂亮。但是,在示波器上看到頻率是 24MHz。檢查晶體上的標(biāo)記,果然是 24MHz 的頻率。所以,客戶在使用 STM8AF52A9 時(shí),為了提高性能,使用了最高主頻 24MHz。

客戶所遇到的問題應(yīng)該就出在 24MHz 的使用上了??蛻粢郧笆褂枚际?16MHz 的主頻。STM8 要求,如果用戶使用的主時(shí)鐘頻率超過了 16MHz,那么 Flash 以及 EEPROM 的訪問需要配置 1 個(gè)等待周期。

STM8AF52A9 數(shù)據(jù)手冊可見如下:

參考手冊 RM0016 在 HSE 的描述中,也提到了:

對(duì)于選擇 0 等待周期還是 1 等待周期,必須在選項(xiàng)字節(jié)中選擇。檢查芯片的選項(xiàng)字節(jié),發(fā)現(xiàn)選擇的是 0 等待周期,所以問題就是就出在這了。

3.問題解決

使用 STVP,在 OPTION BYTE 頁面修改選項(xiàng)字節(jié),將等待周期設(shè)置為 1 個(gè)等待周期,如下:

下載更新芯片的選項(xiàng)字節(jié),使用之前的.hex 文件,可以正常工作了。

結(jié)論

由于使用的 24MHz 主頻已經(jīng)超出 16MHz,而在選項(xiàng)字節(jié)中并沒有修改等待周期為 1 等待周期,導(dǎo)致在 Flash 訪問上存在問題,無法正常運(yùn)行程序。

處理

需要修改選項(xiàng)字節(jié),將等待周期修改為 1 等待周期。

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

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356765
  • 時(shí)鐘源
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    16007

原文標(biāo)題:STM8使用24MHz外部晶振無法正常運(yùn)行

文章出處:【微信號(hào):mcugeek,微信公眾號(hào):MCU開發(fā)加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請問上電如何判斷ADP2291正常工作了呢?

    輸入是4.9V,給4.2V鋰電池充電充不進(jìn)去。請問我上電如何判斷ADP2291正常工作了呢?我如果不接鋰電池,測量第3個(gè)管腳BAT的電壓是0V;接上鋰電池測量3個(gè)管腳BAT的電壓是
    發(fā)表于 01-08 09:36

    STM32程序運(yùn)行偶發(fā)不工作,只能重新燒錄程序才能正常的原因?

    STM32F051程序運(yùn)行偶發(fā)不工作,表現(xiàn)無法通訊,也無法控制,重新上電也無法恢復(fù),只能重新燒
    發(fā)表于 04-07 06:09

    LM358替換圣邦威SGM358后為什么無法正常工作了?

    現(xiàn)在用LM358替換出現(xiàn)很大的問題:在3.3V供電情況下無法正常通信,將電壓提高到3.6V可以通信。手冊中單電源供電的范圍是3V~32V,3.3V是在此范圍內(nèi)的,為什么
    發(fā)表于 08-30 08:01

    STVP的作用是什么

    文章目錄一、前述二、STVD的使用三、STVP的使用1、STVP的作用:2、STVP的使用四、串口燒錄程序一、前述STVD是意法半導(dǎo)體推出的,可以支持STM8和STM32而IAR不盡如
    發(fā)表于 07-15 09:01

    MCU休眠喚醒ST25R3914工作正常問題

    ,此時(shí)偶爾出現(xiàn)3914無法正常工作,目前測試兩個(gè)之間SPI通訊有,3914的RF口也有信號(hào)輸出,但是天線端沒有信號(hào)。這種情況只要出現(xiàn)只要不斷供電不管多少次喚醒都不能
    發(fā)表于 05-09 15:03

    造成AD623無法正常工作的原因是什么?

    接入10nF的電容,它無法正常工作,其輸出電壓等于偏置電壓,但是,去掉輸入串聯(lián)的電容,它又可以正常工作
    發(fā)表于 11-15 06:27

    為什么手按住晶振單片機(jī)就能工作了

    晶振為單片機(jī)提供時(shí)鐘頻率,有了時(shí)鐘頻率單片機(jī)才能正常工作。上電,如果晶振不起振導(dǎo)致單片機(jī)無法正常工作
    的頭像 發(fā)表于 10-13 16:26 ?5957次閱讀
    為什么手按住晶振<b class='flag-5'>后</b>單片機(jī)就能<b class='flag-5'>工作了</b>?

    STM32F4系列芯片無法正常工作的現(xiàn)象及原因分析集錦

    最近一年多開始使用STM32F4系列芯片,在使用開發(fā)板、評(píng)估板的時(shí)候一切正常,但當(dāng)自己做板子的時(shí)候事故頻發(fā),最典型的就是無法啟動(dòng)、無法刷機(jī),
    發(fā)表于 01-22 09:59 ?21次下載
    <b class='flag-5'>STM32</b>F4系列芯片<b class='flag-5'>無法</b><b class='flag-5'>正常</b><b class='flag-5'>工作</b>的現(xiàn)象及原因分析集錦

    1、STVD和STVP的使用及串口燒寫程序教程

    文章目錄一、前述二、STVD的使用三、STVP的使用1、STVP的作用:2、STVP的使用四、串口燒錄程序一、前述STVD是意法半導(dǎo)體推出的,可以支持STM8和STM32而IAR不盡如
    發(fā)表于 11-21 18:51 ?17次下載
    1、STVD和<b class='flag-5'>STVP</b>的使用及串口燒寫程序教程

    STM32每次下載正常運(yùn)行,但是斷電或復(fù)位程序運(yùn)行就無法正常運(yùn)行的解決辦法

    STM32每次下載程序正常運(yùn)行,但是斷電或復(fù)位程序運(yùn)行就無法正常運(yùn)行,大概解決辦法如下1、
    發(fā)表于 12-08 11:51 ?28次下載
    <b class='flag-5'>STM32</b>每次下載<b class='flag-5'>后</b><b class='flag-5'>正常</b>運(yùn)行,但是斷電或復(fù)位<b class='flag-5'>后</b>程序運(yùn)行就<b class='flag-5'>無法</b><b class='flag-5'>正常</b>運(yùn)行的解決辦法

    STM32的SPI1,按下復(fù)位鍵無法通信或者用仿真器提供的電源時(shí)無法正常通信、只有當(dāng)重新連接電源才正常通信

    最近利用STM32調(diào)試NRF24L01模塊進(jìn)行無線收發(fā)通信,在實(shí)際調(diào)試過程中遇到以下問題:1.STM32板子在仿真器提供電源下,NRF24L01無法正常通信,當(dāng)其它外部電源替換
    發(fā)表于 01-12 12:15 ?2次下載
    <b class='flag-5'>STM32</b>的SPI1,按下復(fù)位鍵<b class='flag-5'>無法</b>通信或者用仿真器提供的電源時(shí)<b class='flag-5'>無法</b><b class='flag-5'>正常</b>通信、只有當(dāng)重新連接電源才<b class='flag-5'>正常</b>通信

    STM32G0復(fù)位死機(jī)

    有客戶反映,STM32G071RBT6 在使用 STM32CubeProgrammer 燒錄完程序只能運(yùn)行一次,復(fù)位,程序無法運(yùn)行,如果
    的頭像 發(fā)表于 03-17 10:56 ?7250次閱讀

    服務(wù)器在升級(jí)RAID卡固件版本無法正常啟動(dòng)

    使用Unikits工具升級(jí)RAID卡固件版本,服務(wù)器無法正常啟動(dòng),系統(tǒng)進(jìn)入救援模式。
    的頭像 發(fā)表于 06-26 11:12 ?1058次閱讀
    服務(wù)器在升級(jí)RAID卡固件版本<b class='flag-5'>后</b><b class='flag-5'>無法</b><b class='flag-5'>正常</b>啟動(dòng)

    STM32無法正常輸出PWM信號(hào)的原因及解決方法

    無法正常輸出PWM信號(hào)的問題。本文將探討STM32無法正常輸出PWM信號(hào)的原因,并提供解決方法。 一、引腳配置錯(cuò)誤
    的頭像 發(fā)表于 01-02 17:38 ?1w次閱讀

    為什么我的PoE設(shè)備無法正常工作

    Hi福專家,為什么我的PoE設(shè)備無法正常工作?
    的頭像 發(fā)表于 01-25 11:13 ?954次閱讀
    為什么我的PoE設(shè)備<b class='flag-5'>無法</b><b class='flag-5'>正常</b><b class='flag-5'>工作</b>?