




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第三章 s3c2410主要外設(shè)功能部件 arm匯編指令 uart異步串口通信 通用i/o端口 nand flash控制器 nor flash接口電路1. arm匯編指令加載加載/存儲指令存儲指令 ldr:ldr條件目的寄存器, 用于將存儲器中的一個32位的字?jǐn)?shù)據(jù)傳送到目的寄存器中;常用于從存儲器中讀取32為的字?jǐn)?shù)據(jù)到通用寄存器。 ldr r0,=rpcone /寄存器地址存放到通用寄存器中 str:str條件源寄存器, 用于從源寄存器中將一個32位的字?jǐn)?shù)據(jù)傳送到存儲器中。 ldr r0,uartadd str r1,r0 /向uart中存入數(shù)據(jù)數(shù)據(jù)處理指令數(shù)據(jù)處理指令 mov:mov條件s目的
2、寄存器,源操作數(shù) 用于完成從另一個寄存器、被移位的寄存器或?qū)⒁粋€立即數(shù)加載到目的寄存器;s項決定指令的操作是否影響cpsr中條件標(biāo)志位的值,當(dāng)無s時,指令不更新cprs中條件標(biāo)志位的值。 mov r9,r2 movs r0,#oxff00 cmp:cmp條件 操作數(shù)1,操作數(shù)2 用于把一個寄存器的內(nèi)容和另一個寄存器的內(nèi)容或立即數(shù)進(jìn)行比較,同時更新cpsr中條件標(biāo)志位的值。該指令只進(jìn)行一次減法運算,但不存儲結(jié)果,只更改條件標(biāo)準(zhǔn)位。 cmp r0,#oxff00 跳轉(zhuǎn)指令 用于實現(xiàn)程序流程的跳轉(zhuǎn);可以完成從當(dāng)前指令向前或向后的32mb地址空間的跳轉(zhuǎn);(超過要使用直接向程序計數(shù)器pc寫入跳轉(zhuǎn)地址值的
3、方式)。 b 跳轉(zhuǎn)指令 bl 帶返回的跳轉(zhuǎn)指令 blx 帶返回和狀態(tài)切換的跳轉(zhuǎn)指令 bx 帶狀態(tài)切換的跳轉(zhuǎn)指令wakeup_sleep;release sclkn after wake-up from the sleep mode.ldrr1,=misccrldrr0,r1bicr0,r0,#(717) strr0,r1;set memory control registers ldrr0,=smrdataldrr1,=bwscon;bwscon addressaddr2, r0, #52;end address of smrdataldrr3, r0, #4strr3, r1, #4cmpr
4、2, r0bne%b0 ;(before to lable 0)2. uart異步串口通信uart與與rs232、rs485之間的聯(lián)系與區(qū)別之間的聯(lián)系與區(qū)別 計算機史前 rs232 db25 同步和異步 個人計算機 rs232 db9(小型) 異步 ibm pc rs232 db9 完整的定義 pc時代 整合rs232和非rs232串口的uart nb時代 usb和1394取代uart 后pc時代 usb3.0、sata串口、并口之爭 uart ttl電平 3.3v 正邏輯 rs232 +5+12為低,-12-5為高 負(fù)邏輯 rs485 +2+6為高,-2-6為低 正邏輯 電平為線間壓差、10
5、mbps、3000m max232、max485uart異步串口的傳輸格式:異步串口的傳輸格式: 以字符為傳輸單位 字符間的時間間隔不定,字符內(nèi)的時間間隔固定 空閑位、起始位、資料位、奇偶校驗位、停止位uart通信時序圖 開始前,空閑狀態(tài),送出連續(xù)“1”; 傳送開始,發(fā)出“0”,然后是發(fā)送字符; 字符長度可以約定,ascii編碼; 字符最后一位之后添加奇偶校驗(可選); 完畢后,發(fā)送停止位“1”信號,寬度約定; 進(jìn)入空閑狀態(tài),送出連續(xù)“1”uart通信過程:s3c2410的uart控制器: 3個獨立的異步串行i/o端口; 具有中斷和dma兩種模式; 最高支持速率115.2kpbs; 每個通道包
6、含2個16位fifo寄存器; 可編程的波特率、紅外收發(fā)模式; uart ch 0 and 1 with nrts0, ncts0, nrts1, and ncts1 每個uart包含波特率發(fā)生器、接收器、發(fā)送器和控制單元波特率發(fā)生器: 為傳輸提供串行移位時鐘; 其時鐘源從內(nèi)部系統(tǒng)或uclk中選擇; 波特率由時鐘源16分頻和波特率除數(shù)寄存器(ubrdivn)指定的16位除數(shù)決定。ubrdivn = (int)(pclk/(bps x 16) ) -1ubrdivn = (int)(40000000/(115200 x 16) -1 = (int)(21.7) -1 = 21 -1 = 20自動流
7、控(auto flow control): 通過rts和cts信號實現(xiàn); 只有當(dāng)cts有效時,uart將fifo中的數(shù)據(jù)發(fā)出; 只要接收fifo至少2b空余時,rts就會被置為有效。uart異步串口的軟硬件應(yīng)用:異步串口的軟硬件應(yīng)用:硬件電路圖:max202芯片相關(guān)信息相關(guān)寄存器: 33個控制寄存器,分為11類; 線控制寄存器ulconn:規(guī)定傳輸幀格式; 控制寄存器uconn:定義發(fā)送/接收數(shù)據(jù)模式; 狀態(tài)寄存器utrstatn,讀取接收/發(fā)送狀態(tài); 波特率寄存器ubrdiv,確定波特率劃分值; 發(fā)送寄存器utxhn,表示發(fā)送的數(shù)據(jù); 接收寄存器urxhn,表示接收的數(shù)據(jù)。 fifo控制寄存
8、器、 fifo狀態(tài)寄存器、 modem控制寄存器、 modem狀態(tài)寄存器、錯誤狀態(tài)寄存器uart line control register奇偶模式停止位數(shù)字節(jié)長度uart control registeruart tx/rx status register發(fā)送器為空發(fā)送緩存器為空接收緩存器準(zhǔn)備uart transmit buffer registeruart receive buffer registeruart baud rate divisor register#define ulcon0 (*(volatile unsigned *)0x50000000) /uart線控制寄存器#de
9、fine ucon0 (*(volatile unsigned *)0x50000004) /uart控制寄存器#define ufcon0 (*(volatile unsigned *)0x50000008) /fifo控制寄存器#define utrstat0 (*(volatile unsigned*)0x50000010) /uart狀態(tài)寄存器#define ubrdiv0 (*(volatile unsigned *)0x50000028) /波特率除數(shù)寄存器#define utxh0 (*(volatile unsigned *)0x50000020)#define urxh0 (
10、*(volatile unsigned *)0x50000024)int tsmain()char buf;ulcon0 &=0xffffff00;ulcon0 |=0x03; /1位起始位,位起始位,8位數(shù)據(jù)位位數(shù)據(jù)位ucon0 =0x0805; /串口時鐘串口時鐘pclk,查詢方式查詢方式ubrdiv0 =0x1a; /波特率波特率115200while(1) if(utrstat0 & 0x01) /接收是否完畢接收是否完畢 =1結(jié)束結(jié)束buf=urxh0; /讀取數(shù)據(jù)讀取數(shù)據(jù)while(!(utrstat0 & 0x04);/是否允許發(fā)送是否允許發(fā)送 =1允許允許utxh0=buf;
11、return 0;3. 通用i/o端口通用通用i/o端口的分類端口的分類由軟件設(shè)置。在啟動程序之前必須定義每個引腳的使用功能。否則,即被配置為i/o端口。i/o端口的應(yīng)用電路類型:端口的應(yīng)用電路類型: 無需上拉電阻的應(yīng)用推薦:采用灌電流方式驅(qū)動電路,直接加限流電阻; i/o端口的電流為4ma。例外:考慮拉電流與灌電流是否接近; i/o端口作輸入用時,采集信號的需要; 需上拉電阻的應(yīng)用推薦:自身結(jié)構(gòu)要求需要上拉電阻,如iic總線功能 按芯片手冊指定連接i/o端口的軟硬件應(yīng)用:端口的軟硬件應(yīng)用:硬件電路圖:相關(guān)的寄存器: 40多個控制寄存器,分為5類; 配置寄存器cpxcon:定義x端口的引腳;
12、數(shù)據(jù)寄存器gpxdat:讀/寫端口數(shù)據(jù); 上拉寄存器gpyup:使能端口的上拉寄存器; 混合控制寄存器:控制上拉電阻、高阻狀態(tài)等; 外部中斷控制寄存器extintn等;gpxcongpxcon寄存器寄存器:它用于配置引腳的功能 端口a與端口b-h在功能上有所不同,gpacon中每一位對應(yīng)一根引腳(共23根引腳);gpacon通常被設(shè)為全1,以便訪問外部存儲設(shè)備; 端口b-h在寄存器操作上完全相同,gpxcon中每兩位控制一根引腳,00表示輸入,01表示輸出,10表示特殊功能,11保留不用gpxdatgpxdat寄存器:寄存器:用于讀寫引腳 當(dāng)引腳被設(shè)為輸入時,讀此寄存器得到對應(yīng)引腳的電平狀態(tài)是
13、高還是低;當(dāng)引腳被設(shè)為輸出時,寫此寄存器相應(yīng)位可令此引腳輸出高低電平。gpxupgpxup寄存器:寄存器: 上拉電阻、下拉電阻的作用在于,當(dāng)gpio引腳處于第三態(tài)(非高低電平,而是高阻態(tài),即相當(dāng)于沒接芯片)時,它的電平狀態(tài)由上拉電阻和下拉電阻確定。port a control registers (gpacon/gpadat)port x control registers (x=bh) (gpxcon, gpxdat, and gpxup) 各組端口數(shù)量不一,所以并不固定。#define gpfcon (*(volatile unsigned *)0 x56000050)#define gp
14、fdat (*(volatile unsigned *)0 x56000054)#define gpfup (*(volatile unsigned *)0 x56000058)int ledmain()void delay(unsigned int);unsigned char ledtab=0 xf7,0 xef,0 xdf,0 xbf;int i;gpfup&=0xffffff87; /使能上拉使能上拉f3-6gpfcon&=0xc03f;gpfcon|=0x1540; /將將f3-6設(shè)為輸出口設(shè)為輸出口while(1)for(i=0;i9 /page address 也可以這么認(rèn)為,一
15、個nand flash地址的a0a7是它的column_addr,a9a25是它的page address。#define rnfconf (*(volatile unsigned *)0 x4e000000) /nand flash configuration#define rnfcmd (*(volatile char *)0 x4e000004 /nand flash command#define rnfaddr (*(volatile char *)0 x4e000008 /nand flash address#define rnfdata (*(volatile char *)0 x
16、4e00000c /nand flash data#define rnfstat (*(volatile unsigned *)0 x4e000010 /nand flash opreation status#define rnfecc (*(volatile int *)0 x4e000014 /nand flash ecc#define rnfecc0 (*(volatile char *)0 x4e000014#define rnfecc1 (*(volatile char *)0 x4e000015#define rnfecc2 (*volatile char *)0 x4e00001
17、6現(xiàn)在舉一個例子,假設(shè)要從nand flash中的第5000字節(jié)處開始讀取1024個字節(jié)到內(nèi)存的0 x30000000處,這樣調(diào)用read函數(shù):nf_read(5000, 0 x30000000,1024);分析5000這個src_addr,根據(jù) :column_addr=src_addr%512; page_address=(src_addr9); 可得出column_addr=5000%512=392page_address=(50009)=9于是可以知道5000這個地址是在第9頁的第392個字節(jié)處。于是nf_read函數(shù)將這樣發(fā)送命令和參數(shù)column_addr=5000%512;pag
18、e_address=(50009);nf_cmd=0 x01; 從2nd half開始讀取nf_addr= column_addr &0 xff; 1st cycle a7:0nf_addr=page_address&0 xff; 2nd.cycle a16:9nf_addr=(page_address8)&0 xff; 3rd.cycle a24:17nf_addr=(page_address16)&0 xff; 4th.cycle a25向nandflash的命令寄存器和地址寄存器發(fā)送完以上命令和參數(shù)之后, 就可以從rnfdata寄存器(nandflash數(shù)據(jù)寄存器)讀取數(shù)據(jù)了.下面的代碼進(jìn)行數(shù)據(jù)的讀取.for(i=column_addr;i 9); unsigned char * buf = desc_addr; while(unsigned int)buf 255) nf_cmd(0 x01); else nf_cmd(0 x00); nf_addr(cloumn_addr & 0
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度退房流程規(guī)范合同
- 二零二五年度未成年人特殊監(jiān)護(hù)協(xié)議書
- 二零二五年度鋼琴考級輔導(dǎo)班報名合同書
- 二零二五年度房地產(chǎn)糾紛民事調(diào)解協(xié)議書生效流程與保障措施
- 二零二五年度交通事故雙方當(dāng)事人自行和解協(xié)議書
- 二零二五年度教育培訓(xùn)機構(gòu)合作合同續(xù)約提前通知期限
- 二零二五年度房產(chǎn)投資房屋買賣借款合同
- 2025年度游泳池租賃與水上樂園項目運營安全保障合同
- 2025年甘肅貨運從業(yè)資格證試題庫和答案大全
- 大城市渣土運輸合同
- 分布式光伏發(fā)電開發(fā)建設(shè)管理辦法2025
- 《科幻小說賞析與寫作》 課件 -第六章 “外星文明”的善意與惡行-《安德的游戲》
- 《我國的文化安全》課件
- 2025年貴州蔬菜集團有限公司招聘筆試參考題庫含答案解析
- 2025蛇年一上英語寒假作業(yè)
- 醫(yī)院設(shè)施日常巡查管理制度
- 2025年太倉市文化旅游發(fā)展集團限公司及子公司公開招聘12名高頻重點提升(共500題)附帶答案詳解
- 機械制圖題庫及答案
- 安裝承包合同(2025年)
- 云上貴州大數(shù)據(jù)(集團)有限公司招聘筆試沖刺題2024
- 人教版四年級下冊數(shù)學(xué)第二單元觀察物體(二) 單元測試
評論
0/150
提交評論