在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

對STM32內部FLASH編程時遇到的ADC異常問題

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-05-14 09:18 ? 次閱讀

STM32用戶使用STM32F407芯片開發產品。用到內部3個ADC,其中ADC1與ADC2工作在ADC雙模式,ADC3獨立工作。運行代碼時給FLASH開鎖編程后,發現ADC3不工作了(其DR數據寄存器似乎不更新了,倒是用來觸發ADC的定時器TIM2依然正常),Flash編程前后ADC3配置寄存器CR1、CR2沒有發生改變。如果重新配置ADC3后就能正常工作。

從問題現象來看,初步感覺跟flash編程有些關系。

經了解,客戶的確做了flash編程,有一部分參數需要存放在FLASH內。他的ADC3是由TIM2觸發的,ADC3的轉換結果是通過DMA搬運。

鑒于此,我這邊便提醒他,如果不是基于雙BANK條件,在flash編程時CPU是堵塞的,此時若發生中斷不會得到響應,讓他注意這點及因此可能導致的問題。

客戶進一步反饋確認:

1:通ADC結果過DMA讀取,并非中斷方式獲取;

2:FLASH編程過程中禁止了所有中斷;

3:奇怪的是ADC3改為由軟件觸發則沒有異常現象。用來觸發ADC的定時器一直計數正常,并且只要重新配置ADC3(無須對觸發定時器重新配置)也能恢復它的正常工作。

先說下客戶提到的在flash編程時將總中斷關閉動作。其實,從效果來講,這個關中斷沒啥用,反正在Flash編程過程中即使有中斷發生CPU也不會給予響應。

結合其反饋,軟件觸發和定時器觸發ADC有個明顯差別,就在于定時器的觸發對于我們用戶來講往往存在些未知性或不確定性,即不知它具體的觸發時間點。客戶一直強調TIM工作保持正常,對ADC不能被觸發感到奇怪。

整體上,通過問題癥狀結合經驗初步判斷是ADC3發生溢出事件了,建議客戶做進一步檢查確認。

后來,他反饋的確是發生了ADC溢出事件。在FLASH編程前暫停TIM2觸發就可以避免溢出發生,不再發生ADC功能異常。

按理說他現在ADC結果是DMA傳輸,TIM觸發DMA時應該可以及時讀取數據的,怎么還發生了溢出呢?那就有種可能,在某個時刻,當ADC被TIM觸發完成轉換后,這時的DMA還沒有準備好,導致ADC的結果沒有被及時取走。

那什么原因會導致ADC結果不能被及時取走呢?若DMA配置在非循環模式,當DMA傳輸完成一輪數據后,DMA將不再繼續實施數據傳輸,這時CPU往往還會進入DMA中斷服務程序做些必要處理或者為下輪傳輸做準備。若這個DMA傳輸完成中斷發生在FLASH編程期間,這就可能導致問題。由于該期間它本身不能得到響應,下一輪的DMA傳輸就沒法被開啟。但此時的TIM還是依然如故地觸發ADC,其結果若不能被及時取走,導致溢出就再自然不過了。

當ADC發生溢出后,如果沒有對溢出位做清零,后續的ADC轉換動作是不會觸發DMA的。具體到本案例,嚴格地講,后來客戶覺得讀不到ADC的更新數據,不是因為ADC不工作,其實它一直被定時器觸發轉換,只是因為發生了溢出,沒法正常觸發DMA傳輸,進而無法實現ADC結果的搬運。

所以,在上述應用情況下,在做flash編程前可以先行關閉定時器,之后再打開。或者在DMA傳輸完成的中斷服務程序里,在重新開啟DMA之前,先暫時關閉定時器,對并ADC的溢出及出錯做檢測處理,之后再開啟定時器和DMA傳輸。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120807
  • STM32
    +關注

    關注

    2270

    文章

    10915

    瀏覽量

    356764
  • 定時器
    +關注

    關注

    23

    文章

    3254

    瀏覽量

    115075

原文標題:對STM32內部FLASH編程時遇到的ADC異常問題

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32WB55RG開發(2)----STM32CubeProgrammer燒錄

    程序接口(UART、USB DFU、I2C、SPI和CAN)讀取、寫入及驗證器件內存。 STM32CubeProgrammer的功能廣泛,可以對STM32內部存儲器(如Flash、R
    的頭像 發表于 12-16 15:52 ?284次閱讀
    <b class='flag-5'>STM32</b>WB55RG開發(2)----<b class='flag-5'>STM32</b>CubeProgrammer燒錄

    STM32F334 ADC1和ADC2同步采樣,有時會出現采ADC1和ADC2所有的通道采集數據都一樣的情況為什么?

    STM32F334 ADC1和ADC2同步采樣,有時會出現采ADC1和ADC2所有的通道采集數據都一樣,給人直觀的感覺像是
    發表于 05-15 08:15

    stm32ADC采樣異常的原因?

    采用雙ADC采樣,其中的一個ADC的采樣通道信號異常:具體來說就是在小范圍內,信號隨被采用信號線性跟隨,超過一定值之后,采樣值突然跳變為一固定值,此后再改變被采樣電壓也無濟于事,非得重啟方可。不知有沒有人曾
    發表于 05-13 06:59

    STM32L475VE內部Flash編程出現ECCD錯誤的原因?

    使用的芯片型號 STM32L475VE,使用 HAL 庫 `HAL_FLASH_Program` API 對 內部 Flash 進行編程,出
    發表于 04-26 07:21

    STM32是如何從flash讀取指令并執行的?

    [td]因為STM32H750自帶的FLASH太小,而工程文件超過這個flash的容量,所以需要外掛一塊flash來存程序,但是此程序需要加密,然后就
    發表于 04-24 07:09

    STM32、ESP8266與MQTT連接阿里云物聯網的串口通信異常解析

    阿里云物聯網平臺的過程中,串口通信異常成為了一個常見的挑戰。本文將探討這些異常現象及其可能的原因,并給出相應的解決方案。 首先,我們來談談STM32與ESP8266之間的串口通信問題。這兩者的組合通常用于實現數據的采集與傳輸。然
    的頭像 發表于 04-19 17:19 ?1515次閱讀

    STM32F030F4 adc采集異常的原因?

    單片機型號:STM32F030F4P6 問題: 做ADC采集時,如果不調用LED_Init()函數,ADC的讀數最大值就會變成1024,只有10位精度,而且如果把LED 的初始化函數放在ADC
    發表于 04-12 07:28

    STM32 ADC功能異常的原因?

    某人使用STM32芯片的ADC功能,發現ADC數據完全不對。反復核對供電、ADC硬件線路、來回驗證ADC相關軟件配置都沒能解決問題,讓人抓狂
    發表于 04-08 08:19

    stm32使用例程開啟USB主機程序后,flash編程異常位是怎么回事?

    項目中使用到USB主機端,另外使用內部flsah存儲數據;當USB接入設備后,從flash寄存器可看出有編程異常位,導致無法存儲數據。如果開機后沒有接入USB設備,
    發表于 03-28 09:28

    STM32G070 ADC如何禁用內部基準?

    STM32G070 :使用ADC時,不想使用MCU自帶的VREF電壓源,但只要使能ADC的ADEN位(CR寄存器),內部的電壓源自動被使能(ADVREGEN=1),似乎是同步的。ADE
    發表于 03-27 06:50

    STM32上下電內部flash被改寫的原因?

    基于STM32F405系列一個64pin MCU,在使用過程中,整機掉電更換另一個部件,再上電后發現這個產品不工作了。發回廠家發現STM32內部flash數據被改寫了,前幾行被改成了0
    發表于 03-25 08:24

    Stm32H7 spi會帶來更大的adc噪聲,導致小信號異常值的原因?

    [Stm32H7]spi會帶來更大的adc噪聲,導致小信號異常
    發表于 03-25 06:10

    stm32F407 ADC+DMA 10路采集,2路數據異常怎么排查?

    stm32F407ADC+DMA 10路采集2路數據異常(通道9/10)使用的是0/1/2/38/9/10/11/12/13 通道9與通道10 雖然有數據但不變化好像與外邊是斷開的配置都是相同的其余各通道采集正常
    發表于 03-13 07:38

    stm32 flash寫數據怎么存儲的

    stm32 flash寫數據怎么存儲的? STM32是一款廣泛應用于嵌入式系統開發的微控制器,它的Flash存儲器是其中一個重要的組成部分。在本文中,我將詳細介紹
    的頭像 發表于 01-31 15:46 ?2477次閱讀

    GD32 ADC內部通道采樣異常原因

    熟悉GD32的小伙伴都知道,ADC除了可以采集IO口上的電壓外,還有兩個內部通道,分別為內部溫度傳感器通道(ADC0_CH16)和Vrefint通道(
    的頭像 發表于 01-26 09:45 ?3071次閱讀
    GD32 <b class='flag-5'>ADC</b><b class='flag-5'>內部</b>通道采樣<b class='flag-5'>異常</b>原因
    主站蜘蛛池模板: 亚洲一区免费视频| 全部免费a级毛片| 男人搡女人视频免费看| 婷婷亚洲五月琪琪综合| h视频免费网站| 欧美一区亚洲| 最近2018年中文字幕大全一| 91视频-88av| 五月婷婷激情综合网| 欧美精品高清在线xxxx| 免费 在线观看 视频| 一级aaaaa毛片免费视频| 天天干夜夜躁| h黄视频在线观看| 亚洲综合免费| 99久久精品国产免费| 婷婷丁香九月| 性孕妇洗澡video国产| 四虎影午夜成年免费精品| 日本黄色免费电影| 日本三级理论| 日韩在线视频www色| 日韩毛片在线| 国产性片在线观看| 永久福利盒子日韩日韩免费看| 国产精品电影一区| 77788色淫网站免费观看| 爱爱的免费视频| 日日操操干干| 啪啪免费看| 中文字幕在线色| 日本三级香港三级人妇99视| 国产在线视频你懂的| 天天操天天干天搞天天射| 天天做天天爱天天操| 狠狠插狠狠操| 日本在线不卡免| 四虎国产精品永久在线| 久草色在线| 午夜视频观看| 欧美另类高清xxxxx|