<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > STM32F10x在OTP MCU編程器中的應用

STM32F10x在OTP MCU編程器中的應用

作者: 時(shí)間:2011-01-04 來(lái)源:網(wǎng)絡(luò ) 收藏

  因其價(jià)格低廉、性能成熟在許多小家電中得以廣泛應用。硬件通常是其開(kāi)發(fā)過(guò)程中必不可少的設備。本案是用于該類(lèi)單片機的硬件,可對該類(lèi)單片機實(shí)現聯(lián)機編程和脫機編程;還可以測試該類(lèi)單片機的工作頻率、工作電壓等多項參數,一機多用。

  1、STM32F101R8主要特性

  STM32F10x系列是ST公司推出的基于A(yíng)RM最新架構內核的MCU。集成了存儲器、時(shí)鐘、復位和電源管理電路,DMA控制器,模數/數模轉換器,快速I(mǎi)O口,多功能定時(shí)器及各種通訊端口。具有多種低功耗模式、在線(xiàn)調試端口。該系列MCU引腳、外設、軟件具有高度兼容性,能應用到許多領(lǐng)域中。

  本案選用了基本型器件STM32F101R8。這顆器件的主要特性有:

  •   ARM 32位 CPU,36MHz,單周期乘法和硬件除法器
  •   64KB FLASH,10KB SRAM
  •   2.0~3.6V,POR,PDR,PVD
  •   內部8MHz、40kHz RC振蕩器,PLL;外部4~16MHz晶體,32kHz用于RTC和備份域
  •   7通道DMA控制器
  •   3個(gè)4通道通用定時(shí)器,IC/OC/PWM
  •   2個(gè)SPI口,最高18Mbis/s
  •   2個(gè)I2C接口,支持SMBus
  •   3個(gè)USART,支持ISO7816,LIN,IrDA,Modem
  •   1個(gè)16通道12位ADC
  •   低功耗模式:睡眠、停止、待機
  •   SWD和JTAG在線(xiàn)調試
  •   CRC計算,96位唯一ID
  •   51個(gè)IO口
  •   小型LQFP64封裝

  2、硬件設計

  編程器通過(guò)串口或其它通訊口與配套工具軟件通訊,實(shí)現對芯片的聯(lián)機編程。脫機時(shí)則通過(guò)按鍵控制對芯片的編程。

  編程器硬件框圖如圖1所示。

編程器硬件框圖

圖1 編程器硬件框圖

  編程器產(chǎn)生芯片所需的工作和編程電壓,并根據需要控制所有電壓的開(kāi)啟和關(guān)閉。同時(shí),利用主控制器內部多通道ADC檢測供電電壓和編程電壓,一旦電壓發(fā)生異常即關(guān)斷系統。

  指示燈編程器用主控制器高驅動(dòng)能力口線(xiàn)直接控制指示燈的開(kāi)關(guān),指示編程器的各種工作狀態(tài)。

  通過(guò)編程接口對OTP芯片編程,同時(shí)還供給芯片工作時(shí)鐘,檢測芯片內部振蕩器的頻率。

  STM32F101R8的應用連接如圖2所示。

STM32F應用連接圖

圖2 STM32F應用連接圖

  其中,CLK提供OTP芯片工作時(shí)鐘;AD0 ~ AD4共5路電壓輸入,用于檢測系統的工作電源和編程電壓;f1_TST和f2_TST則用于檢測OTP芯片的內部振蕩器頻率。RXD、TXD是編程器和上位機之間的通訊接口(UART),SCL和SDA是STM32F10x和OTP芯片之間的通訊接口(I2C,亦可用SPI等)。

  L1、L2、L3連接到指示燈,BEEP連接到蜂鳴器,KEY連接到脫機編程按鍵。其余引腳控制編程電壓和編程接口的開(kāi)關(guān)。

  3、編程器軟件設計

  3.1 主流程

  軟件主流程圖如圖3所示。

軟件主流程圖

圖3 軟件主流程圖

  主流程看起來(lái)非常簡(jiǎn)單,因為程序充分利用了STM32F10x強大的中斷能力。

  3.2 ADC、DMA和TIM的設計

  在上圖的主循環(huán)中,沒(méi)有對ADC的任何處理,這是因為程序采用了定時(shí)啟動(dòng)ADC、用DMA自動(dòng)讀取ADC的采樣數據、并在DMA中斷中處理ADC數據的方法。采用這種工作方式,只需要在初始化過(guò)程中正確設置ADC、DMA和定時(shí)器即可,其它都在相應的ISR中完成。

  DMA1通道1連接到ADC,配置如下:外設基地址是ADC1的數據寄存器地址,存儲器基地址是開(kāi)辟的緩沖區首地址,數據源是外設,數據目的是緩沖區,緩沖區大小為5個(gè)單元,外設地址不自動(dòng)增量而存儲器地址則自動(dòng)增量,數據均為半字,循環(huán)模式,高優(yōu)先級,傳輸完成產(chǎn)生中斷。

  ADC設置為掃描模式,數據右對齊,軟件觸發(fā)轉換,共5個(gè)通道,最大采樣時(shí)間,且在開(kāi)機復位后校準一次。

  用TIM2 CH2控制ADC定時(shí)轉換。定時(shí)器配置為計數時(shí)鐘1MHz,CH2為輸出比較模式,定時(shí)中斷。

  每當產(chǎn)生TIM2 CC2中斷,就啟動(dòng)ADC1按既定順序對所有通道轉換一次,DMA則自動(dòng)保存每個(gè)通道的轉換結果。當所有通道轉換完畢,DMA產(chǎn)生中斷,在此中斷中處理數據。本案采用了如下方法:每3次數據中取中值,每8個(gè)中值再取平均值作為最后的轉換結果,并據此判斷各電壓是否正常。

  3.3 用PWM方式產(chǎn)生OTP芯片的工作時(shí)鐘

  本案編程器提供給的是2MHz的工作時(shí)鐘(其它頻率也可)。本案利用TIM的PWM功能輸出一個(gè)2MHz的方波。

  TIM4的計數時(shí)鐘為36MHz,CH4設置為PWM1模式。設置完成、啟動(dòng)TIM4后無(wú)需其它代碼即可在相應引腳上輸出時(shí)鐘信號,并可控制其啟動(dòng)和停止。。

  3.4 頻率檢測

  本案采用主控制器內部的SySTick產(chǎn)生1s中斷,并配合另一個(gè)定時(shí)器計數的頻率輸出。因為STM32F10x的工作主頻很高,因此可以很準確地檢測OTP單片機的內部振蕩頻率。

  程序設計時(shí)利用了ST提供的標準外設庫STM32F10x_StdPeriph_Lib_V3.3.0。限于篇幅,具體代碼不詳述。

  4、結語(yǔ)

  本方案已在多種OTP單片機上測試,編程可靠,測量準確,效果很好。

蜂鳴器相關(guān)文章:蜂鳴器原理


關(guān)鍵詞: OTP單片機 Cortex-M3 編程器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>