freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

嵌入式系統(tǒng)講義第4章s3c2410x系統(tǒng)結(jié)構(gòu)-文庫(kù)吧

2025-08-25 21:08 本頁(yè)面


【正文】 時(shí)鐘極性選擇。 0:高電平有效; 1:低 0 CPHA 1 時(shí)鐘相位選擇。 0:格式 A; 1:格式 B 0 Tx Auto Garbage Data Mode Enable (TAGD) 0 僅接收模式控制。 0:正常收發(fā); 1:僅接收(此時(shí) (自動(dòng) )發(fā)送任意數(shù)據(jù)) 用于主 SPI僅接收,讀取數(shù)據(jù)啟動(dòng)發(fā)送 0 實(shí)驗(yàn):從 SPI僅接收時(shí)使 TAGD=0,不向 SPTDAT寫數(shù)據(jù)的情況 SPI狀態(tài)寄存器( SPSTA) Register Address R/W Description Reset Value SPSTA0 0x59000004 R SPI0 狀態(tài)寄存器 0x01 SPSTA1 0x59000024 R SPI1 狀態(tài)寄存器 0x01 字段名 位 意 義 初值 reserved 7:3 保 留 Data Collision Error Flag (DCOL) 2 數(shù)據(jù)寫碰撞 (正在發(fā)送時(shí)寫 SPTDAT) 錯(cuò)誤標(biāo)志。 0:無(wú)錯(cuò); 1:碰撞錯(cuò)誤 0 Multi Master Error Flag (MULF) 1 多主 SPI錯(cuò)誤標(biāo)志。 0:無(wú)錯(cuò); 1:多主 SPI錯(cuò)誤。 0 Transfer Ready Flag (REDY) 0 收發(fā)就緒 標(biāo)志 。 0:未就緒; 1:收或發(fā)就緒。 寫 SPTDAT后該位自動(dòng)清 0 1 SPI引腳控制寄存器( SPPIN) Register Address R/W Description Reset Value SPPIN0 0x59000008 R/W SPI0 引腳控制寄存器 0x02 SPPIN1 0x59000028 R/W SPI1 引腳控制寄存器 0x02 字段名 位 意 義 初值 reserved 7:3 保 留 Multi Master error detect Enable (ENMUL) 2 引腳多主 SPI錯(cuò)誤測(cè)試設(shè)置。 0:禁測(cè); 1:允許多主錯(cuò)誤測(cè)試。 測(cè)試結(jié)果在 SPSTAn中的 MULF位 0 reserved 1 該位應(yīng)該為 1 1 Master Out Keep (KEEP) 0 1字節(jié)發(fā)完后 MOSI的控制與釋放 0:釋放; 1:保持 MOSI原電平 0 SPI預(yù)分頻寄存器( SPPRE) Register Address R/W Description Reset Value SPPRE0 0x5900000C R/W SPI0 預(yù)分頻寄存器 0x00 SPPRE1 0x5900002C R/W SPI1 預(yù)分頻寄存器 0x00 字段名 位 意 義 初值 Prescaler value 7:0 預(yù)分頻值 波特率計(jì)算: Baud tate f B = Pclk/2/( Prescaler value + 1 ) Prescaler value = Pclk/2/f B - 1 提示: SPI的波特率必須 25MHz。 SPI發(fā)送數(shù)據(jù)寄存器( SPTDAT) Register Address R/W Description Reset Value SPTDAT0 0x59000010 R/W SPI0 發(fā)送數(shù)據(jù)寄存器 0x00 SPTDAT1 0x59000030 R/W SPI1 發(fā)送數(shù)據(jù)寄存器 0x00 字段名 位 意 義 初值 Tx data 7:0 SPI所發(fā)送的 8位數(shù)據(jù) 0x00 提示: 在同時(shí)雙向傳輸時(shí),從 SPI設(shè)備必須先把所發(fā)送的數(shù)據(jù)寫到“發(fā)送數(shù)據(jù)寄存器” SPTDATn中,然后再寫主SPI設(shè)備的“發(fā)送數(shù)據(jù)寄存器” SPTDATn。 SPI接收數(shù)據(jù)寄存器( SPRDAT) Register Address R/W Description Reset Value SPRDAT0 0x59000014 R SPI0 接收數(shù)據(jù)寄存器 0x00 SPRDAT1 0x59000034 R SPI1 接收數(shù)據(jù)寄存器 0x00 字段名 位 意 義 初值 Tx data 7:0 SPI所接收的 8位數(shù)據(jù) 0x00 提示: 在同時(shí)雙向傳輸時(shí),啟動(dòng)發(fā)送后,應(yīng)該先讀取數(shù)據(jù),然后再發(fā)送數(shù)據(jù)。 四、 SPI應(yīng)用方法 查詢方式操作步驟 如果 SPI控制寄存器 SPCON已經(jīng)設(shè)置過,則寫數(shù)據(jù)發(fā)送寄存器 SPTDAT啟動(dòng)發(fā)送。查詢方式操作步驟如下: ( 1)設(shè)置預(yù)分頻寄存器 SPPRE; ( 2)設(shè)置控制寄存器 SPCON,并且為查詢方式; ( 3)設(shè)置一個(gè) GPIO引腳,使選中的從 SPI設(shè)備的片選信號(hào) nSS有效; ( 4)發(fā)送數(shù)據(jù): 第一次發(fā)送: 向數(shù)據(jù)發(fā)送寄存器 SPTDAT寫數(shù)據(jù)。 再發(fā)送: 情況 1只發(fā)不收:查詢并確認(rèn) Rx REDY為 1,然后向數(shù)據(jù)發(fā)送寄存器 SPTDAT寫數(shù)據(jù),再次啟動(dòng)發(fā)送; 情況 2同時(shí)收發(fā):查詢并確認(rèn) Rx REDY為 1,然后先讀取數(shù)據(jù)接收寄存器 SPRDAT中的數(shù)據(jù),再向數(shù)據(jù)發(fā)送寄存器 SPTDAT寫數(shù)據(jù)。 ( 6)接收數(shù)據(jù): 一般方式( 同時(shí)收發(fā), TAGD=0):查詢并確認(rèn) Rx REDY為 1,然后先從數(shù)據(jù)接收寄存器中讀取數(shù)據(jù),再向數(shù)據(jù)發(fā)送寄存器中寫數(shù)據(jù)(同上面情況 2)。 僅接收方式 ( TAGD=1):查詢并確認(rèn) Rx REDY為 1,然后從數(shù)據(jù)接收寄存器中讀取數(shù)據(jù)。對(duì)于主 SPI設(shè)備,讀取數(shù)據(jù)的同時(shí)啟動(dòng)一次發(fā)送(從 SPI設(shè)備發(fā)送)。 ( 7)設(shè)置 GPIO引腳,使選中的從 SPI設(shè)備的片選信號(hào)nSS無(wú)效,結(jié)束傳輸。 DMA模式發(fā)送 對(duì) SPI的 DMA模式發(fā)送操作步驟如下: ( 1)設(shè)置預(yù)分頻寄存器 SPPRE; ( 2)設(shè)置控制寄存器 SPCON,并且設(shè)為 DMA模式; ( 3) SPI請(qǐng)求 DMA服務(wù); ( 4) DMA發(fā)送 1字節(jié)數(shù)據(jù)給 SPI; ( 5) SPI接口發(fā)送數(shù)據(jù); ( 6)返回到( 3),直到 DMA的計(jì)數(shù)器為 0。 DMA模式接收 SPI以 DMA模式接收操作步驟如下: ( 1)設(shè)置預(yù)分頻寄存器 SPPRE; ( 2)設(shè)置控制寄存器 SPCON,并且設(shè)為 DMA模式; ( 3)將 SPI設(shè)置為僅接收模式,設(shè)置引腳控制寄存器SPPIN中的 TAGD為 1; ( 4)當(dāng) SPI接收到 1字節(jié)數(shù)據(jù)后,請(qǐng)求 DMA服務(wù); ( 5) DMA從 SPI讀取數(shù)據(jù); ( 6) SPI自動(dòng)啟動(dòng)一次無(wú)用數(shù)據(jù) (0xFF)的發(fā)送; ( 7)返回到( 4),直到 DMA的計(jì)數(shù)器為 0; ( 8)設(shè)置控制寄存器 SPCON,改設(shè)為其它模式,如查詢、中斷模式; ( 9)如果 Rx REDY被設(shè)置為 1,則需要讀取最后接收的數(shù)據(jù)。 注意: DMA第 1次接收的是數(shù)據(jù)的無(wú)效的。 SPI從設(shè)備以格式 B接收的問題 當(dāng) SPI從設(shè)備以格式 B接收, DMA的讀信號(hào)比數(shù)據(jù)接收的鎖存信號(hào)早,在數(shù)據(jù)未鎖存之前,讀信號(hào)就出現(xiàn)了。因此使用 DMA模式不能夠正確接收。如下圖所示。 對(duì)于中斷和查詢模式,可以延時(shí)半個(gè)時(shí)鐘,能夠正確讀取數(shù)據(jù)。 五、 SPI接口應(yīng)用舉例 把 S3C2410的 SPI0設(shè)為主設(shè)備,同時(shí)把 SPI1設(shè)為從設(shè)備,將二者的 MOSI、 MISO交叉相連,二者的 SCL對(duì)連, 用GPG0引腳控制 nSS1。編寫程序, SPI0用中斷方式、 SPI1用查詢方式,采用格式 B、 1Mb/s的波特率, SPI0和 SPI1在發(fā)送的同時(shí)接收數(shù)據(jù),雙方都發(fā)送、接收 100個(gè)字節(jié)的數(shù)據(jù)。設(shè)系統(tǒng) Pclk=50MHz。 解: ( 1) SPI計(jì)算預(yù)分頻值: 由 Baud tate = Pclk/2/( Prescaler value + 1 ) Prescaler value = Pclk/2/Baud tate - 1=24 ( 2) SPI控制寄存器值 SPCON0=0b 01 1 1 0 1 0 = 0x3A 含義:中斷模式、使用時(shí)鐘、主設(shè)備、 0極性、格式 B、一般收發(fā)傳輸。 SPCON1=0b 01 0 0 0 1 0 = 0x22 含義:中斷、不用時(shí)鐘、從設(shè)備、 0極性、格式 B、收發(fā) ( 3) SPI引腳控制寄存器 SPPIN0=0b 0 1 1 = 0x03 含義:不檢測(cè)多主錯(cuò)誤、保留 輸出引腳保持輸出。 SPPIN1=0b 0 1 1 = 0x03 ( 4) SPI引腳配置 GPECON=0b ** ** 10 10 10 ** …… 先清 0: amp。~(0xFC20);再設(shè)置: |(0xA820) GPGCON=0b …… 11 11 11 ** 11 11 ** 01 先清 0: amp。~0xFCF3);再設(shè)置: |(0xFCF1) SPI0引腳 29 28 27 26 25 24 23 22 21 20 GPECON * * 1 0 1 0 1 0 * * CLK0 MOSI0 MISO0 SPI0引腳 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 GPGCON 1 1 1 1 1 1 * * 1 1 1 1 * * 0 1 CLK1 MOSI1 MISO1 * nSS1 nSS0 * 輸出 ( 4)中斷寄存器設(shè)置 中斷模式寄存器: INTMOD amp。=~(122) INT_UART2位于第 15位,將 UART2設(shè)置為 IRQ中斷 中斷屏蔽寄存器: INTMSKamp。=~ (122) 中斷優(yōu)先級(jí)寄存器 PRIORITY: 不設(shè)置 ,用復(fù)位值 0x7F,優(yōu)先級(jí)為循環(huán)方式。 ( 5)在中斷服務(wù)程序中對(duì)寄存器的操作 清除中斷標(biāo)志寄存器相應(yīng)位: SRCPNDamp。=~ (122) 清除中斷服務(wù)寄存器相應(yīng)位: INTPNDamp。=~ (122) 第 17講到此 include void Main(void) { sysinit()。 while(1) { Uart_Printf(\n 2410 Board SPI TEST!\n)。 Test_SPI( )。 } } char tran_data0[100], rec_data0[100], num0=0。 char tran_data1[100], rec_data1[100], num1=0。 void Test_SPI(void) { rSPPRE0=24。 rSPPRE1=24。 rSPCON0=0x3A。 rSPCON1=0x22。 rSPPIN0=0x03。 rSPPIN1=0x03。 rGPECON = rGPECON amp。 ~(0xFC20)|(0xa820)。 rGPGCON = rGPGCON amp。 ~0xFCF3 | 0xFCF1。 rGPGDAT = rGPGCON amp。 ~1。 //使 GPG0輸出 0 INTMOD amp。=~(122)。 INTMSK amp。=~(122)。 pISR_SPI0=(U32)spi0_int。 rSPTDAT1=tan_data1[num1]。 rSPTDAT0=tan_data0[num0]。 for(。num1100。) { while(rSPSTA1amp。1==0)。 INTMSK |=(122)。 //關(guān)閉 SPI0中斷 rec_data[num1] = rSPRDAT1。 num1++。 if(num1100) rSPTDAT1=tan_data1[num1]。 INTMSK amp。=~(122)。 //打開 SPI0中斷 } INTMSK |=(122)。 //關(guān)閉 SPI0中斷 rGPGDAT |= 1。 //使 GPG0輸出 1, nSS1為高 } void _irq spi_int(void) { rec_data[num0]=rSPRDAT0。 num0++。 if(num100) rSPTDAT0 = tran_data[num0]。 SRCPND amp。=~ (122)。 //清除中斷標(biāo)志寄存器相應(yīng)位 INTPND amp。=~ (122)。 //清除中斷服務(wù)寄存器相應(yīng)位 } define rSPTDAT0 (*(volatile unsigned *)0x59000010) //
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1