www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]S3C2440A RISC微處理器可以支持一個(gè)多主控IIC總線串行接口。一條專(zhuān)用串行數(shù)據(jù)線(SDA)和一條專(zhuān)用串行時(shí)鐘線(SCL)傳遞連接到IIC總線的總線主控和外設(shè)之間的信息。SDA和SCL線都為雙向的圖上可見(jiàn),IIC時(shí)鐘從PCLK產(chǎn)生,

S3C2440A RISC微處理器可以支持一個(gè)多主控IIC總線串行接口。一條專(zhuān)用串行數(shù)據(jù)線(SDA)和一條專(zhuān)用串行時(shí)鐘線(SCL)傳遞連接到IIC總線的總線主控和外設(shè)之間的信息。SDA和SCL線都為雙向的

圖上可見(jiàn),IIC時(shí)鐘從PCLK產(chǎn)生,并同時(shí)受到IICSTAT控制,IIC數(shù)據(jù)實(shí)際上是由一個(gè)移位寄存器送出,當(dāng)IIC處于從機(jī)狀態(tài)的時(shí)候,有一個(gè)地址比較器來(lái)檢測(cè)IIC總線,使用IIC總線主要有以下寄存器需要設(shè)置

1.設(shè)置相應(yīng)的端口復(fù)用為IIC端口,啟用IIC時(shí)鐘,連接IIC的中斷,自然還需要設(shè)置IIC相應(yīng)的中斷,這些在上一節(jié)已經(jīng)描述過(guò),現(xiàn)在不贅述

2.設(shè)置控制寄存器


設(shè)置應(yīng)答使能IIC時(shí)鐘,IIC發(fā)送時(shí)鐘,IIC中斷等


3.設(shè)置想要發(fā)送的從機(jī)地址


4.修改IIC總線的狀態(tài),并啟用發(fā)送

5.在發(fā)送過(guò)程中,檢測(cè)IIC不同的狀態(tài)作相應(yīng)的操作

具體使用過(guò)程將下列代碼

Iic.c

#include"iic.h"u8flag=0;//中斷標(biāo)志(在中斷子程序里清零,即未中斷flag=1,中斷后flag=0)void__irqI2CInt(void)//中斷子程序{rSRCPND"=BIT_IIC;//清除源掛起rINTPND|=BIT_IIC;//清除中斷掛起flag=0;}voidI2CInit(void){rCLKCON|=(1<<16);//打開(kāi)IIC時(shí)鐘rGPEUP|=0xc000;//關(guān)上拉rGPECON&=~0xf0000000;rGPECON|=0xa0000000;//GPE15:IICSDA,GPE14:IICSCLpISR_IIC=(unsigned)I2CInt;//設(shè)置中斷程序地址rSRCPND|=BIT_IIC;//清除源掛起rINTPND|=BIT_IIC;//清除中斷掛起rINTMOD&=~BIT_IIC;//設(shè)置中斷模式為IRQ模式//使能應(yīng)答,IIC總線時(shí)鐘IICCLK=PCLK/16,使能中斷,發(fā)送時(shí)鐘IICCLK/16rIICCON=(1<<7)|(0<<6)|(1<<5)|(0xf);rIICADD=0x10;//2440從機(jī)地址=[7:1]0位自動(dòng)代表輸入輸出rIICSTAT=0x10;//IIC總線數(shù)據(jù)輸出使能(Rx/Tx)rINTMSK&=~(BIT_IIC);//開(kāi)中斷源}//IIC主機(jī)發(fā)送數(shù)據(jù),voidIICMasterWriteData(u8data){flag=1;rIICDS=data;//從器件地址寫(xiě)入數(shù)據(jù)移位寄存器rIICSTAT=0xf0;//主發(fā)模式,產(chǎn)生起始信號(hào),使能Rx/TxrIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志while(flag==1)//等待發(fā)送完成DelayMs(1);}//IIC從機(jī)發(fā)送數(shù)據(jù)voidIICSlverWriteData(u8data){flag=1;rIICDS=data;rIICSTAT=0xb0;//主接收模式,使能Rx/TxrIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志while(flag==1)//等待發(fā)送完成DelayMs(1);}//iic普通數(shù)據(jù)發(fā)送,應(yīng)該在配置好主機(jī)發(fā)送或者從機(jī)發(fā)送之后voidIICWriteData(u8data){flag=1;rIICDS=data;//寫(xiě)入存儲(chǔ)字節(jié)的地址到數(shù)據(jù)移位寄存器rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志while(flag==1)//等待發(fā)送完成DelayMs(1);}//iic禁止發(fā)送接收中斷voidIICStopRxTx(void){rIICSTAT=0xd0;//禁止Rx/TxrIICCON=0xaf;//ResumesIICoperation.iic復(fù)位操作DelayMs(1);}//iic禁止接收中斷voidIICStopRx(void){rIICSTAT=0x90;//StopMasRxconditionrIICCON=0xaf;//ResumesIICoperation.DelayMs(1);//Waituntilstopcondtionisineffect.}



Iic.h

#ifndef__IIC_H_#define__IIC_H_#include"2440addr.h"#include"def.h"#include"uart0.h"#include"delay.h"externu8flag;voidI2CInit(void);voidIICMasterWriteData(u8data);voidIICSlverWriteData(u8data);voidIICWriteData(u8data);voidIICStopRxTx(void);voidIICStopRx(void);#endif



At24c02.c

#include"at24c02.h"voidAtWriteByte(u8regAddr,u8data){IICMasterWriteData(AT_DEVICE_ADDR);IICWriteData(regAddr);IICWriteData(data);IICStopRxTx();}u8AtReadByte(u8regAddr){u8temp=0;IICMasterWriteData(AT_DEVICE_ADDR);IICWriteData(regAddr);IICSlverWriteData(AT_DEVICE_ADDR);//注意:讀取下面這個(gè)字節(jié)必須進(jìn)行,因?yàn)樵诎l(fā)送帶有讀命令的從設(shè)備地址后,//AT24C02A會(huì)再返回一個(gè)從設(shè)備地址信息或從設(shè)備內(nèi)存地址信息作為應(yīng)答,所以//一定要把該字節(jié)讀取后拋棄,因?yàn)樗皇俏覀兯x取的信息;也就是一次偽讀取過(guò)程flag=1;temp=rIICDS;rIICCON&=~0x10;//清除Tx/Rx中斷掛起標(biāo)志while(flag==1)DelayMs(1);rIICCON=0x2f;//ResumesIICoperation.禁止應(yīng)答temp=rIICDS;DelayMs(1);IICStopRx();//Waituntilstopcondtionisineffect.returntemp;}//返回1檢測(cè)失敗返回0檢測(cè)成功u8AtCheck(void){u8test=0x88;AtWriteByte(0x01,test);DelayMs(10);test=0x99;test=AtReadByte(0x01);if(test==0x99)return1;elsereturn0;}



At24c02.h

#ifndef__AT24C02_H_#define__AT24C02_H_#include"iic.h"#defineAT_DEVICE_ADDR0xa0voidAtWriteByte(u8regAddr,u8data);u8AtReadByte(u8regAddr);u8AtCheck(void);#endif


注意發(fā)送過(guò)程中附帶起始信號(hào)以及模式的轉(zhuǎn)變,以及中斷接收到信號(hào)之后數(shù)據(jù)的變化


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

  本文根據(jù)網(wǎng)絡(luò)視頻采集的需要,將網(wǎng)絡(luò)傳輸與視頻采集相結(jié)合,設(shè)計(jì)了以S3C2440為核心的USB攝像頭視頻采集和嵌入式Linux系統(tǒng)下的視頻服務(wù)器,從而實(shí)現(xiàn)了遠(yuǎn)程網(wǎng)絡(luò)視頻信息采集。   

關(guān)鍵字: s3c2440 視頻采集 usb攝像頭

         之前在提起自動(dòng)化或是智能化時(shí),人們會(huì)不自覺(jué)的想到工業(yè)生產(chǎn),這是因?yàn)樽詣?dòng)化這個(gè)字眼進(jìn)入中國(guó),確實(shí)是以工業(yè)

關(guān)鍵字: 嵌入式 Linux s3c2440 視頻采集

  引言   隨著科技的不斷發(fā)展,以數(shù)據(jù)業(yè)務(wù)為主的固定寬帶無(wú)線接入技術(shù)發(fā)展已經(jīng)很成熟,而移動(dòng)寬帶無(wú)線通信技術(shù)還并沒(méi)有得到廣泛的應(yīng)用。由于移動(dòng)寬帶無(wú)線接入系統(tǒng)需要解決帶寬、移動(dòng)性和覆蓋范圍

關(guān)鍵字: IPv6 s3c2440 x86 架構(gòu)

  1 引言   人們生活水平的提高以及科技的進(jìn)步,特別是計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)技術(shù)和通信技術(shù)的發(fā)展,智能家居將慢慢成為未來(lái)家居生活的發(fā)展方向。1984年在美國(guó)誕生了世界上第一座智能家居建筑,

關(guān)鍵字: boa nrf24l01 s3c2440 智能家居

我們知道2440開(kāi)發(fā)流程為:移植uboot--》移植內(nèi)核---》掛接根文件系統(tǒng)。我們移植完內(nèi)核需要掛接根文件系統(tǒng),那么首先我們必須擁有根文件系統(tǒng)。如何來(lái)制作我們的根文件系統(tǒng)呢?第一步:在linux下建

關(guān)鍵字: s3c2440 根文件系統(tǒng)

1.TQ2440u-boot-1.1.6修改文件所在的路徑是u-boot-1.1.6includeconfigsEmbedSky.h將#defineLCD_TFTxxx(LCD類(lèi)型)W353.5寸TFT4802724.3...

關(guān)鍵字: s3c2440 lcd參數(shù)

2440的晶振頻率為12MHZ,有兩個(gè)PLL:MPLL和UPLL,其中MPLL產(chǎn)生FCLK、HCLK、PCLK;UPLL產(chǎn)生UCLK。FCLK為ARM核提供時(shí)鐘,HCLK為AHB總線時(shí)鐘,PCLK為APB總線時(shí)鐘,UCL...

關(guān)鍵字: s3c2440 時(shí)鐘初始化

開(kāi)發(fā)板:TQ2440內(nèi)核:Linux 2.6.32PC OS:Ubuntu 11.041.配置內(nèi)核打開(kāi)I2C功能:打開(kāi)雜項(xiàng)設(shè)備,該選項(xiàng)打開(kāi)后,EEPROM也就打開(kāi)了。2. 修改代碼修改文件: linux/arch/arm...

關(guān)鍵字: at24c02 eeprom s3c2440 移植 linux驅(qū)動(dòng)

在分析ARM-Linux s3c2440中UART的時(shí)有必要先了解 s3c2440A中串口的硬件知識(shí)。硬件篇:S3c2440A串口提供三個(gè)獨(dú)立的異步串行通信I/O端口(asynchronousserial I/O por...

關(guān)鍵字: ARM Linux s3c2440 uart

s3c2440 cpu的默認(rèn)工作主頻有兩種12MHz和16.9344MHz,也就是我們的晶振的頻率,但一般12MHz的晶振用的比較多,F(xiàn)in就是指我們接的晶振頻率。大家都知道s3c2440上電正常工作后頻率是遠(yuǎn)遠(yuǎn)大于12...

關(guān)鍵字: s3c2440 時(shí)鐘
關(guān)閉