在线观看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編程前可以先行關閉定時器,之后再打開?;蛘咴贒MA傳輸完成的中斷服務程序里,在重新開啟DMA之前,先暫時關閉定時器,對并ADC的溢出及出錯做檢測處理,之后再開啟定時器和DMA傳輸。

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

    關注

    31

    文章

    5427

    瀏覽量

    123727
  • STM32
    +關注

    關注

    2291

    文章

    11019

    瀏覽量

    363034
  • 定時器
    +關注

    關注

    23

    文章

    3297

    瀏覽量

    117461

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

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

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    第二十九章 讀寫內部FLASH

    本文介紹了W55MH32內部FLASH,其含主存儲、系統存儲等,可存儲代碼及掉電保存數據。讀寫需解鎖、擦除頁等步驟,標準庫提供相關函數。還展示了擦除編程測試及模擬EEPROM讀寫的實驗。
    的頭像 發表于 06-20 14:09 ?279次閱讀
    第二十九章 讀寫<b class='flag-5'>內部</b><b class='flag-5'>FLASH</b>

    請問STM32G431內部運放1和2輸出連接的ADC為什么不是OPAMP?

    請問下大家,STM32G431 芯片UVW三相的電流檢測,配置使用內部運放PGA,看到G431-ESCdemo板對應motor workbench配置,為什么UV相的運放輸出分別是ADC1 3通道
    發表于 06-10 07:39

    STM32F40xxx和STM32f41xx flash編程手冊

    PM0081_STM32F40xxx and STM32F41xxx單片機編程手冊
    發表于 06-06 17:02 ?3次下載

    請問STM32G431內部運放1和2輸出連接的ADC為什么不是OPAMP?

    請問下大家,STM32G431 芯片UVW三相的電流檢測,配置使用內部運放PGA,看到G431-ESCdemo板對應motor workbench配置,為什么UV相的運放輸出分別是ADC1 3通道
    發表于 06-06 07:47

    如何通過SFL為設備添加Flash編程支持

    SEGGER Flash Loader(SFL)是J-Link設備支持套件(DSK)的一部分,通過SFL,用戶可以為自己的新設備添加Flash編程支持。
    的頭像 發表于 05-19 16:35 ?442次閱讀
    如何通過SFL為設備添加<b class='flag-5'>Flash</b><b class='flag-5'>編程</b>支持

    請問STM32G431內部運放1和2輸出連接的ADC為什么不是OPAMP?

    請問下大家,STM32G431 芯片UVW三相的電流檢測,配置使用內部運放PGA,看到G431-ESCdemo板對應motor workbench配置,為什么UV相的運放輸出分別是ADC1 3通道
    發表于 05-14 08:12

    ad77681數據讀取異常的原因?

    我使用stm32作為spi主機,負責接收ad77681的數據,同時stm32作為arm的spi從機,接收stm32采集到的100個adc的數據,即s
    發表于 04-16 07:26

    STM32使用外部中斷觸發ADC采樣DMA搬運出現兩次進入DMA中斷的異常情況,怎么解決?

    STM32使用外部中斷觸發ADC采樣DMA搬運出現兩次進入DMA中斷的異常情況,使用的HAL庫+MX配置的,示波器觀察波形ADC中斷進入一次,DMA中斷在
    發表于 03-14 12:46

    STM32H750內部flash讀寫的疑問求解

    請教下,STM32H750XBHx我看資料內置flash為128K,并且flash擦除的最小單元也是128K。這樣的話我有數據要保存應該怎樣處理好呢?寫數據時是要將程序部分一起擦除再寫回去嗎?這樣會不會有風險?
    發表于 03-12 06:29

    cubeide的代碼怎么編譯到內部+外部FLASH里面去?

    我有一個項目,準備使用GUI和AI,準備使用STM32U5,但是編譯出來的代碼很多,STM32U5的內部FLASH不夠用,準備使用OSPI擴展外部F
    發表于 03-07 07:48

    SAR ADC的工作頻率范圍是多少,AD10D1500這類的ADC屬于Flash ADC嗎?

    SAR ADC的工作頻率范圍是多少,AD10D1500這類的ADC屬于Flash ADC嗎?Flash
    發表于 02-08 07:39

    STM32C011開發(2)----nBOOT_SEL設置

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

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

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

    ADS8588H內部參考電壓異常的原因?

    依舊 5. 板上使用是3顆ADC芯片,其中這顆有問題的芯片使用內部參考并作為其它2顆ADC的外部參考電壓輸入。只保留主芯片,其它2顆ADC拆掉后,故障一樣。換過3顆
    發表于 11-28 06:30

    第12章-ADC采集電壓和顯示 基于STM32ADC—電壓采集(詳細講解+HAL庫)

    第12章-ADC采集電壓和顯示 基于STM32ADC—電壓采集(詳細講解+HAL庫)
    的頭像 發表于 08-21 16:31 ?5109次閱讀
    第12章-<b class='flag-5'>ADC</b>采集電壓和顯示 基于<b class='flag-5'>STM32</b>的<b class='flag-5'>ADC</b>—電壓采集(詳細講解+HAL庫)
    主站蜘蛛池模板: 免费观看一级成人毛片 | 精品久久免费观看 | 人人射人人草 | 一级看片免费视频囗交 | 青草午夜精品视频在线观看 | bt天堂在线www中文在线 | 欧美色欧美亚洲高清在线视频 | 天天综合五月天 | 激情五月综合 | 美女露出扒开尿口让男人桶 | 爆操欧美 | 全免费a级毛片免费看不卡 全日本爽视频在线 | 久久精品99无色码中文字幕 | 6月婷婷| 欧美日本不卡 | 午夜国产福利在线观看 | 欧美影院一区二区 | 性欧美黑人巨大videos | 天天摸天天做天天爽天天弄 | 91无毒不卡| 日韩成a人片在线观看日本 日韩成人黄色 | 成人免费久久精品国产片久久影院 | 手机在线看片你懂得 | 欧美一级鲁丝片 | 免费性网站 | 亚洲色图综合 | 国产午夜在线观看视频播放 | 久久久久久久久久免免费精品 | 亚欧成人乱码一区二区 | 中国一级特黄真人毛片免费看 | 欧美午夜视频一区二区三区 | 国内精品久久久久影院免费 | 4338×亚洲全国最大色成网站 | 欧美一级二级三级视频 | 黄色免费网站在线观看 | 女同性进行性行为视频 | 亚洲射图| a欧美视频| se色综合视频 | 婷婷激情小说 | 亚洲综合精品香蕉久久网97 |