《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > STM32F10x在OTP MCU編程器中的應(yīng)用
STM32F10x在OTP MCU編程器中的應(yīng)用
電子發(fā)燒友
摘要: STM32F10x系列是ST公司推出的基于ARM最新架構(gòu)Cortex-M3內(nèi)核的MCU。集成了存儲(chǔ)器、時(shí)鐘、復(fù)位和電源管理電路,DMA控制器,模數(shù)/數(shù)模轉(zhuǎn)換器,快速IO口,多功能定時(shí)器及各種通訊端口。具有多種低功耗模式、在線調(diào)試端口。該系列MCU引腳、外設(shè)、軟件具有高度兼容性,能應(yīng)用到許多領(lǐng)域中。
Abstract:
Key words :

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

  1、STM32F101R8主要特性

  STM32F10x系列是ST公司推出的基于ARM最新架構(gòu)Cortex-M3內(nèi)核的MCU" title="MCU">MCU。集成了存儲(chǔ)器、時(shí)鐘、復(fù)位和電源管理電路,DMA控制器,模數(shù)/數(shù)模轉(zhuǎn)換器,快速IO口,多功能定時(shí)器及各種通訊端口。具有多種低功耗模式、在線調(diào)試端口。該系列MCU引腳、外設(shè)、軟件具有高度兼容性,能應(yīng)用到許多領(lǐng)域中。

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

  ARM 32位Cortex-M3 CPU,36MHz,單周期乘法和硬件除法器

  64KB FLASH,10KB SRAM

  2.0~3.6V,POR,PDR,PVD

  內(nèi)部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

  低功耗模式:睡眠、停止、待機(jī)

  SWD和JTAG在線調(diào)試

  CRC計(jì)算,96位唯一ID

  51個(gè)IO口

  小型LQFP64封裝

  2、編程器硬件設(shè)計(jì)

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

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

  

 編程器硬件框圖

 

  圖1 編程器硬件框圖

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

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

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

  STM32F101R8的應(yīng)用連接如圖2所示。

  

STM32F應(yīng)用連接圖

 

  圖2 STM32F應(yīng)用連接圖

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

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

  3、編程器軟件設(shè)計(jì)

  3.1 主流程

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

  

軟件主流程圖

 

  圖3 軟件主流程圖

  主流程看起來(lái)非常簡(jiǎn)單,因?yàn)槌绦虺浞掷昧薙TM32F10x強(qiáng)大的中斷能力。

  3.2 ADC、DMA和TIM的設(shè)計(jì)

  在上圖的主循環(huán)中,沒有對(duì)ADC的任何處理,這是因?yàn)槌绦虿捎昧硕〞r(shí)啟動(dòng)ADC、用DMA自動(dòng)讀取ADC的采樣數(shù)據(jù)、并在DMA中斷中處理ADC數(shù)據(jù)的方法。采用這種工作方式,只需要在初始化過程中正確設(shè)置ADC、DMA和定時(shí)器即可,其它都在相應(yīng)的ISR中完成。

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

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

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

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

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

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

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

  3.4 頻率檢測(cè)

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

  程序設(shè)計(jì)時(shí)利用了ST提供的標(biāo)準(zhǔn)外設(shè)庫(kù)STM32F10x_StdPeriph_Lib_V3.3.0。限于篇幅,具體代碼不詳述。

  4、結(jié)語(yǔ)

  本方案已在多種OTP單片機(jī)上測(cè)試,編程可靠,測(cè)量準(zhǔn)確,效果很好。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。