嵌入式系統(tǒng)課程設(shè)計試驗報告_第1頁
嵌入式系統(tǒng)課程設(shè)計試驗報告_第2頁
嵌入式系統(tǒng)課程設(shè)計試驗報告_第3頁
嵌入式系統(tǒng)課程設(shè)計試驗報告_第4頁
嵌入式系統(tǒng)課程設(shè)計試驗報告_第5頁
已閱讀5頁,還剩5頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、嵌入式系統(tǒng)課程設(shè)計必做部分學院:電控學院專業(yè):通信工程設(shè)計名稱:lie同步串行通訊1、設(shè)計的目的:1. 掌握S3C44B0IIC控制器的編程方法2. 編程實現(xiàn)串行EEPR0存儲器24C16的數(shù)據(jù)存儲和訪問2、設(shè)計的內(nèi)容:1. 學習S3C44B0 IIC控制器的原理與編程方法;2. 學習IIC存儲器24C16的編程方法;3. 理解IIC存儲器24C16的與S3C44B0的電路連接原理;4. 掌握C語言中斷程序設(shè)計方法;5. 編程實現(xiàn)對24C16的數(shù)據(jù)存儲和訪問。3、設(shè)計思路、遇到的問題及解決方法:此次試驗,我們結(jié)合嵌入式系統(tǒng)原理及應(yīng)用教材以及老師提供的各種 pdf和word資料,了解到了各種寄存

2、器的配置方法,女口IICDS等。對于例程中的各種函數(shù),女口 Wr24C16(), Rd24C16(),_irq IicInt()等,通過對程序的仔細研讀,最終了解了它們的各自用途,并在此基礎(chǔ)上,編寫了主函數(shù)。實現(xiàn)了從 0-255共256個字節(jié)的寫入及讀取操作。這次實驗我們遇到了不少的難題,像開始使用ARM-Project Manager平臺一 開始,由于對此平臺的不了解,我們走了許都彎路。像對于頭文件的配置問題, 總是配置不對,后來發(fā)現(xiàn)頭文件為程序自主生成,無需配置。還有關(guān)于程序中的一些.s文件,開始并不知道是有何作用,后來在老師的指點下,發(fā)現(xiàn)有必要將 其加入到sourse文件欄中調(diào)用,同時調(diào)

3、用的同時,由于不理解調(diào)用的路徑問題, 多次編譯失敗,后來發(fā)現(xiàn)了問題,是路徑配置不當,最終更改了路徑,解決了問 題。再有,在對老師提供的例程進行閱讀時候,發(fā)現(xiàn)了不少的啰嗦以及錯誤語 句,例如 Uart_Printf(%dn,k);語句就不應(yīng)該為 Uart_Printf(%dn,&k);這些問題我們都通過調(diào)試最終給予了改正。-10 -4、設(shè)計的結(jié)果及驗證正確輸出結(jié)果如下截圖,從超級終端中回顯顯示了正確數(shù)據(jù),實驗成立。5、程序流程圖如下:6、全部源代碼如下(可驗證)#include #include C:ARM25144b044b.h#include C:ARM25144b044blib.h#inc

4、lude C:ARM25144b0Def.h#include C:ARM25144b0iic.h#include C:ARM25144b0Option.h#include #include #include #include #include #define WRDATA #define POLLACK (2)#define RDDATA (3)#define SETRDADDR (4)#define IICBUFSIZE 0x20U8 _iicDataIICBUFSIZE;volatile int _i icDataCount;volatile int _i icStatus;volatil

5、e int _i icMode;inticPt;void _irq IicInt(void);void Wr24C16(U32 slvAddr,U32 addr,U8 data)_iicMode=WRDATA;_iicPt=0;_iicData0=(U8)addr;_iicData1=data;_iicDataCount=2;rllCDS=slvAddr;/0xa0,寫移位寄存器rllCSTAT=0xf0; MasTx,Start/Clearing the pending bit isnt needed because the pending bit has been cleared.whil

6、e(_iicDataCount!=-1);中斷完成,總線不忙,可以傳送,同時移位寄存器已經(jīng)準備好兩個數(shù)據(jù)量_iicMode=POLLACK;while(1)rIICDS=slvAddr; / 0xa0,寫移位寄存器_iicStatus=0x100;rIICSTAT=0xf0; /MasTx,StartrIICCON=0xaf; /resumes IIC operation.IIC-BUSwhile(_iicStatus=0x100); /rllCSTAT控制寄存器數(shù)值發(fā)給 iicStatus ,0xf0if(!(_iicStatus&0x1) /Last-received bit is 0 (

7、ACK was received),判斷 ack 是否收到數(shù)據(jù)break; / when ACK is received不忙rllCSTAT=0xd0; /stop MasTx condition IIC-bus rllCCON=0xaf; /resumes IIC operation.Delay(1); /wait until stop condtion is in effect. /write is completed.void Rd24C16(U32 slvAddr,U32 addr,U8 *data) 寫模式開啟【】的計數(shù)器取地址移位寄存器地址聯(lián)系,總線忙_iicMode=SETRDA

8、DDR; / _iicPt=0;/data_iicData0=(U8)addr; / _iicDataCount=1; rIICDS=slvAddr; / rIICSTAT=0xf0; /MasTx,Start/Clearing the pending bit isnt needed because the pending bit has been cleared. while(_iicDataCount!=-1);_iicMode=RDDATA;_iicPt=0; /數(shù)組數(shù)據(jù)變量_iicDataCount=1; /?rIICDS=slvAddr; /設(shè)置移位寄存器輸出地點rIICSTAT=0

9、xb0; /MasRx,Start IIC-bus不忙rllCCON=0xaf; /resumes IIC operation.總線控制while(_iicDataCount!=-1);*data=_iicData1;void _irq liclnt(void)/中斷掛起U32 iicSt,i; /?rI_ISPC=BIT_IIC; /?iicSt=rIICSTAT; /寫入 fo,d0,if(iicSt&0x8) / when bus arbitration is failed. IIC-bus仲裁過程狀態(tài)標志位if(iicSt&0 x4) / when a slave address is

10、 matched with IICADD IIC-bus從地址狀態(tài)標志位if(iicSt&0x2) / when a slave address is 0000000b IIC-bus地址為 0 狀態(tài)標志:if(iicSt&0x1) / when ACK isnt received IIC-bus上一次接收到的狀態(tài)標志位switch(_iicMode)case POLLACK:iicStatus=iicSt;break;case RDDATA:if(_iicDataCount-)=0)_iicData_iicPt+=rllCDS;rllCSTAT=0x90; /stopMasRxconditi

11、on , Master receive mode IIC-bus 不忙,Enable Rx/TxrllCCON=0xaf; /resumes IIC operation.Delay(1); /wait until stop condtion is in effect./too long time./The pending bit will not be set after issuing stop condition.break;_iicData_iicPt+=rllCDS; 0,1/The last data has to be read with no ack.設(shè)置應(yīng)答位,讀取時為NO 應(yīng)

12、答位if(_iicDataCount)=0)rIICCON=0x2f; /resumes IIC operation with NOACK.elserIICCON=0xaf; /resumes IIC operation with ACKbreak;case WRDATA:if(_iicDataCount-)=0) /2 ,1,0,-1rIICSTAT=0xd0; /stop MasTx condition IIC-bus不忙rIICCON=0xaf; /resumes IIC operation.總線控制Delay(1); /wait until stop condtion is in ef

13、fect./The pending bit will not be set after issuing stop condition.break;rllCDS=_iicData_iicPt+; /_iicData0 has dummy.傳送兩次,數(shù)據(jù)和地址for(i=0;i10;i+); /for setup time until rising edge of IICSCLrIICCON=0xaf; /resumes IIC operation.break;case SETRDADDR:Uart_Printf(S%d,_iicDataCount);if(_iicDataCount-)=0) /

14、1,0break; /IIC operation is stopped because of IICCON4rllCDS=_iicData_iicPt+; /第一次開始傳入數(shù)據(jù)地址,addrfor(i=0;i10;i+); /for setup time until rising edge of IICSCLrIICCON=0xaf; /resumes IIC operation.在發(fā)送模式 讀時,沒有中斷break;default:break;Main(void)unsigned int i;U8 k;Port_lnit();Uart_lnit(0,115200);Uart_Select(O); /which UartrPCONF |= 0xa;/portFrPUPF |= 0x0;/portFrlNTCON=0x1;/的配置 00001010 IICSCL,IICSDA的上拉電阻配置寄存器,允許上拉電阻連接到對應(yīng)腳支持向量中斷見書66頁中斷服務(wù),指向plSR_IIC=(unsigned

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論