新聞中心

        EEPW首頁 > 電源與新能源 > 設計應用 > 一種CSR電源控制系統設計與實現

        一種CSR電源控制系統設計與實現

        作者: 時間:2013-07-04 來源:網絡 收藏

        引言

        本文引用地址:http://www.104case.com/article/174998.htm

        實際應用系統往往需要進行高精度的測量,同時還必須進行實時快速控制,提高其開發效率。為此人們常采用高精度A/D芯片加帶ISP開發功能的單片機系統來實現。德州儀器(TI)的MSC1210單片機解決了上述問題。它集成了一個增強型8051內核、高達33 MHz的時鐘周期、8路24位高精度∑-△A/D轉換器、Flash存儲器等。

        1 MSC1210的工作原理

        是將微型的主要部分集成在一個芯片上的單芯片微型誕生于20世紀70年代中期,經過20多年的發展,其成本越來越低,而性能越來越強大,這使其應用已經無處不在,遍及各個領域。例如電機控制、條碼閱讀器/掃描器、消費類電子、游戲設備、電話、HVAC、樓宇安全與門禁控制、工業控制與自動化和白色家電(洗衣機、微波爐)等。微控制器(Microcontroller Unit,即MCU)可從不同方面進行分類:根據數據總線寬度可分為8位、16位和32位機;根據存儲器結構可分為Harvard結構和Von Neumann結構;根據內嵌程序存儲器的類別可分為OTP、掩膜、EPROM/EEPROM和閃存Flash;根據指令結構又可分為CISC(Complex Instruction Set Computer)和RISC(Reduced Instruction Set Computer)微控制器。

        微控制器MSC1210是TI推出的一種集模擬、數字、閃速存儲器于一體的高性能微控制系統。其應用范圍十分廣泛。使用增強的數字處理內核和高速閃存并帶有高性能模擬和外圍部件,可以實現優越的系統性能。MSC1210包含閃存、片內SFR、SRAM、閃存、暫存和Boot ROM.其存儲器在物理結構上有四個存儲空間:片內、片外程序存儲器,片內、片外數據存儲器。由不同的尋址指令對0000H~FFFFH共64KB的空間進行尋址。由于采用不同的尋址方式,程序段和數據段可以重疊。程序存儲器由MCU自動讀取,也可使用指令MOVC指定所要讀取的程序區,這通常用來查找表格。數據存儲區使用指令MOVX進行讀取,這條指令提供了多種尋址方式以指定目的地址,對64KB數據存儲器進行讀取。當片內存儲器使能時,片內范圍的操作將對片內存儲器進行讀取,片外范圍的操作將通過P0和P2口讀取外部存儲器。

        MSC1210提供了雙數據指針(DPTR)加速數據塊的移動速度,它能根據外部存儲器的速度調節讀寫速度,在2~9個指令周期之間變化;它還提供給外部存儲器16位地址總線(P0和P2)。低位地址通過P0口復用得到,硬件可以控制P0和P2口是作為地址線還是作為通用的I/O.為了更好地提高效率,外圍設備也在8051基礎上作了改進。如SPI端口就增加了FIFO,使得傳輸數據有了緩沖區間。32位累加器的使用在處理ADC采樣或其它數據源來的多字節數據時將大大減輕CPU的負擔,使得24位加法和移位可以在幾個指令周期內完成,而無需通過軟件用數百個指令周期來完成。

        2硬件系統設計

        國家九五重大科學工程HIRFL-CSR(蘭州重離子加速器冷卻儲存環)電源控制系統的主要功能是通過電源與模塊完成與中央控制中心的信息交換,接收遠程控制中心的各種監測與遙控命令,并將電源的各種狀態信息反饋給控制中心。控制系統模塊的設計是組建開關電源控制系統的關鍵,所設計的模塊與計算機通信,實現了計算機與電源的主從總線1∶N(本系統N=26)通信方式,并且采用了RS232C和RS485雙串行通信總線標準接口。

        3軟件設計

        軟件設計的開發平臺是Keil公司的Keil C7.0. 為了實現對微控制器MSC1210Y5進行命令操作,應用 C1210語言編寫的CSR電源控制系統的主要程序代碼如下。

        void serial_init (void) file://串行口初始化

        {

        PCON |=0x80;

        SCON = 0x52;

        TMOD |= 0x20;

        file://TH1 = 0xfe;

        TH1 = 0xff;

        TR1 = 1;

        IE=0x80;

        ES0 = 1;

        CON_TXD=0;

        }

        void read_cmd(char i_cmd_buf) file://讀命令操作

        {

        ··· ···

        }

        ··· ···

        void init_I_O(void) file://初始化I/O口

        {

        P0DDRL= 0x55; file://P0 是輸出模式

        P0DDRH= 0x55;

        P2DDRL= 0xff; file://P2 是輸入模式

        P2DDRH= 0xff;

        P3DDRH= 0x55;

        P0=0xff;

        P3 |=0xc0;

        }

        void init_dac_adc(void) file://初始化 DAC 和ADC

        {

        int decimation=1728;

        /* Timer Setup */

        CKCON = 0;

        USEC= 10;

        /* ADC-Vref, SPI and Systimers */


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 林芝县| 海南省| 左权县| 汾西县| 玛沁县| 晴隆县| 南华县| 河西区| 洞口县| 新营市| 三明市| 湛江市| 洛扎县| 安吉县| 崇阳县| 浦城县| 东丰县| 岢岚县| 城固县| 营山县| 桐柏县| 钟祥市| 丽水市| 金溪县| 凌海市| 昌江| 梁平县| 齐齐哈尔市| 东方市| 翁牛特旗| 永德县| 锡林郭勒盟| 五家渠市| 丹棱县| 大厂| 阿拉善右旗| 蒙阴县| 天水市| 景东| 麻阳| 丰台区|