日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] /******************************************************************** ** File : I2C.c " Master Read Write | ** Version : 1.0 ** Description:

 

/******************************************************************

**
** File : I2C.c " Master Read Write |
** Version : 1.0
** Description: I2C 查詢法讀寫24C02
** Author : LightWu
** Date : 2013-4-26
** 必須注意多字節(jié)數(shù)據讀取時,發(fā)送停止位需要在最后一個字節(jié)讀取之前
** 否則數(shù)據讀取后,停止位發(fā)送容易失敗,導致從機接收不到停止位。
*******************************************************************/


#include


//注意:兩次發(fā)送間隔必須要有延時,否則不能再次發(fā)送,串口發(fā)送格式:


unsigned char PTxData[250]; // Pointer to TX data
unsigned char PRxData[250]; // Pointer to RX data




void UartInit(void)
{
if (CALBC1_1MHZ==0xFF) // If calibration constant erased
{
while(1); // do not load, trap CPU!!
}
DCOCTL = 0; // Select lowest DCOx and MODx settings
BCSCTL1 = CALBC1_1MHZ; // Set DCO
DCOCTL = CALDCO_1MHZ;
P3SEL |= 0x30; // P3.4,5 = USCI_A0 TXD/RXD
UCA0CTL1 |= UCSSEL_2; // SMCLK
UCA0BR0 = 104; // 1MHz 9600; (104)decimal = 0x068h
UCA0BR1 = 0; // 1MHz 9600
UCA0MCTL = UCBRS0; // Modulation UCBRSx = 1
UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
}
void UartSend( unsigned char Data )
{
UCA0TXBUF = Data; // TX -> RXed character
while (!(IFG2&UCA0TXIFG)); // USCI_A0 TX buffer ready?,發(fā)送緩沖區(qū)空

}
void IICInit(void)
{
UCB0CTL1 |= UCSWRST; // Enable SW reset
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C Master, synchronous mode
UCB0CTL1 = UCSSEL_2 + UCSWRST; // Use SMCLK, keep SW reset
UCB0BR0 = 12; // fSCL = SMCLK/12 = ~100kHz
UCB0BR1 = 0;
UCB0I2CSA = 0xA0>>1; // Slave Address is ,注意地址需要右移一位,24C02地址為0XA0,故要寫入0X50
// 7位地址模式,器件會發(fā)送一位讀寫位,正好8位。
UCB0CTL1 &= ~UCSWRST; // Clear SW reset, resume operation

}


/*******************************************
函數(shù)名稱:Ucb0I2c_Start(void)
功 能:I2C主機模式,發(fā)送寫起始條件
參 數(shù):無

返回值 :無
********************************************/
void Ucb0I2c_Start(void)
{
UCB0I2CSA = 0x50; // Slave Address is 0xd0
while (UCB0CTL1 & UCTXSTP); // Ensure stop condition got sent
UCB0CTL1 |= UCTR + UCTXSTT; // I2C TX, start condition
while(!(IFG2&UCB0TXIFG)); //等待傳送完
IFG2 &= ~UCB0TXIFG; // Clear USCI_B0 TX int flag
}
void IICSendData( unsigned char Addr ,unsigned char Data )
{
int i;
for(i=3000;i>0;i--); //兩次發(fā)送間隔必須要有延時,否則不能再次發(fā)送


Ucb0I2c_Start();

UCB0TXBUF = Addr; // Load TX buffer
while(!(IFG2&UCB0TXIFG)); //等待傳送完成
IFG2 &= ~UCB0TXIFG; // Clear USCI_B0 TX int flag

UCB0TXBUF = Data; // Load TX buffer
while(!(IFG2&UCB0TXIFG)); //等待傳送完成
IFG2 &= ~UCB0TXIFG; // Clear USCI_B0 TX int flag

UCB0CTL1 |= UCTXSTP; // I2C stop condition

}


void IICReadData( unsigned char Addr )
{
int i;
for(i=3000;i>0;i--); //兩次發(fā)送間隔必須要有延時,否則不能再次發(fā)送

Ucb0I2c_Start();

UCB0TXBUF = Addr; // Load TX buffer
while(!(IFG2&UCB0TXIFG)); //等待傳送完成
IFG2 &= ~UCB0TXIFG; // Clear USCI_B0 TX int flag

UCB0CTL1 &= ~UCTR ; // I2C RX, Read
UCB0CTL1 |= UCTXSTT; // I2C RX, start condition

while(!(IFG2&UCB0RXIFG)); //等待接收完成
IFG2&=~UCB0RXIFG;
PRxData[0] = UCB0RXBUF; // Read RX buffer
while(!(IFG2&UCB0RXIFG)); //等待接收完成
IFG2&=~UCB0RXIFG;
PRxData[1] = UCB0RXBUF; // Read RX buffer
while(!(IFG2&UCB0RXIFG)); //等待接收完成
IFG2&=~UCB0RXIFG;
PRxData[2] = UCB0RXBUF; // Read RX buffer
while(!(IFG2&UCB0RXIFG)); //等待接收完成
IFG2&=~UCB0RXIFG;

//必須注意發(fā)送停止位在最后一個字節(jié)讀取之前
UCB0CTL1 |= UCTXSTP; // I2C stop condition

PRxData[3] = UCB0RXBUF; // Read RX buffer
}
int main(void)
{

WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P3SEL |= 0x06; // Assign I2C pins to USCI_B0

IICInit();

UartInit();


while (1)
{
UartSend('M');

IICSendData(0X00,'A');
IICSendData(0X01,'B');
IICSendData(0X02,'C');
IICSendData(0X03,'D');
IICSendData(0X04,'E');
IICSendData(0X05,'F');
IICSendData(0X06,'H');
IICSendData(0X07,'J');



IICReadData(0x00);
UartSend(PRxData[0]);
UartSend(PRxData[1]);
UartSend(PRxData[2]);
UartSend(PRxData[3]);



}
}

 

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

開創(chuàng)中國文旅產業(yè)AI深度應用新樣本 北京2025年8月22日 /美通社/ -- 以下為來自億歐的報道: 8月22日,桂林旅游股份有限公司旗下銀子巖景區(qū)聯(lián)合合作伙伴正式發(fā)布全球首款AI伴游財神玩具 —— "五...

關鍵字: AI IP 數(shù)字化 硬件

北京2025年8月18日 /美通社/ -- 2025年8月,軟通動力集團一項關鍵決策引發(fā)行業(yè)矚目——以自有資金8億元向全資子公司軟通計算機有限公司完成實繳增資,使其注冊資本增加至23億元。這筆戰(zhàn)略注資不僅彰顯集團對信創(chuàng)核...

關鍵字: AI 硬件 計算機 智能化

在科技飛速發(fā)展的今天,硬件更新?lián)Q代的速度日新月異。然而,許多企業(yè)或個人仍在使用著老舊硬件設備,這些設備雖然性能有限,但在一些對性能要求不高的場景中,仍有其存在的價值。通過合理的內核參數(shù)調優(yōu)和輕量級服務部署方案,我們可以充...

關鍵字: 硬件 內核參數(shù)

北京 2025年5月27日 /美通社/ -- 日前,軟通華方(清華同方)推出全新超銳T40-Z70國產筆記本,主打更輕、更強、更安全。這款新品國產筆記本采用鋁合金材質機身,搭載國產高性能兆芯開先KX-7000八核處理器...

關鍵字: 筆記本電腦 鋁合金 硬件 BSP

隨著科技的飛速發(fā)展,人工智能(AI)已經從科幻作品中的概念逐漸走進了我們的日常生活,深刻地改變著各個行業(yè)的面貌。在這一變革中,硬件作為 AI 技術運行的物理基礎,其重要性不言而喻。對于硬件工程師而言,如何在人工智能時代找...

關鍵字: 人工智能 硬件 工程師

上海 2025年5月15日 /美通社/ -- 近日在CHINASHOP2025期間,商米以"SUPER Solution雙系統(tǒng)高效切換助力商業(yè)環(huán)保"的案...

關鍵字: 硬件 BSP 雙系統(tǒng) 大賽

在軟件和硬件之間,似乎還有一些不軟不硬的存在?沒錯,那就是固件(Firmware)。固件,其實也是一種軟件,但他比普通的軟件更硬。一般是不能隨便改的,改了以后可能整個系統(tǒng)都得完蛋。它是連接普通軟件和硬件的橋梁。

關鍵字: 軟件 硬件

北京2025年4月23日 /美通社/ -- 4月22日,在千年大運河的粼粼波光中,軟通華方"京牌京產"首臺下線儀式于國家網絡安全產業(yè)園區(qū)(通州園)隆重舉行。通州區(qū)委常委、副區(qū)長吳孔安,軟通動力集團董事...

關鍵字: 數(shù)字經濟 軟件 數(shù)字化 硬件

北京2025年4月20日 /美通社/ -- 4月19日,在北京亦莊舉辦的2025北京亦莊半程馬拉松暨人形機器人半程馬拉松賽開跑,20支人形機器人參賽隊和9000余名人類跑者同時出發(fā)。這是全球首個人形機器人半程馬...

關鍵字: 機器人 BSP 大眾 硬件

創(chuàng)新企業(yè)、行業(yè)專家齊聚一堂,洞察趨勢,共探破局之路 深圳2025年4月10日 /美通社/ -- 3月26日,世界經理人攜手消費者科技及創(chuàng)新平臺CTIS、深圳工業(yè)展ITES、深圳國際電子智能制造展EIMS聯(lián)合舉辦&quo...

關鍵字: 硬件 TE AI 供應鏈
關閉