娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月20日(星期五)

正在發生

2018年09月20日 | STM32 24C02函數 I2C例程 非STM32庫方式

發布者:lqs1975 來源: eefocus關鍵字:STM32  24C02函數  I2C例程 手機看文章 掃描二維碼
隨時隨地手機看文章

#define ADDR_24CXX        0xA0
void I2C_24CXX_Write(u16 nAddr, u8* pDat, u16 nLen)
{
   u16 i = 0;
 /* Enable I2C1 acknowledgement if it is already disabled by other function */
 //I2C_AcknowledgeConfig(I2C1, ENABLE);
 STM32_I2c1_Regs->cr1.bit.ACK=1;   //   ACK:應答使能 1:在接收到一個字節后返回一個應答(匹配的地址或數據)
 
 /* Send I2C1 START condition */
 //I2C_GenerateSTART(I2C1, ENABLE);
 STM32_I2c1_Regs->cr1.all|= I2C_EN|I2C_START;
   
  /* Test on I2C1 EV5 and clear it */
 // 【SB=1 起始條件已發送 讀SR1,然后寫數據DR 清零 】   MSL="1主模式"   BUSY="1" 在總線上正在進行數據通訊 )
 //  while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)){;}  /* EV5 */
 while(!(STM32_I2c1_Regs->sr1.bit.SB & I2C_SB)) ;


   /* Send slave address for write */
 //I2C_Send7bitAddress(I2C1, ADDR_24CXX, I2C_Direction_Transmitter);
 STM32_I2c1_Regs->dr.bit.DR=ADDR_24CXX;
   
 /* Test on I2C1 EV6 and clear it */
 // 【ADDR=1  地址發送結束;讀SR1和SR2來清零 】。  TXE="1" 數據寄存器空 MSL="1" BUSY="1", TRA="1" 數據已發送
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){;} /* EV6 */
 while(!(STM32_I2c1_Regs->sr1.all & I2C_ADDR)) ;
 STM32_I2c1_Regs->sr2.all;


   /* Send the low part of memory address */
   //I2C_SendData(I2C1, (u8)nAddr);
 STM32_I2c1_Regs->dr.bit.DR=(u8)nAddr;


 /* Test on I2C1 EV8 and clear it */
 // 【TXE=1 數據寄存器空; 寫數據DR清除,START,STOP】  BTF="1:" 字節發送結束 TRA="數據已發送"  BUSY="在總線上正在進行數據通訊"  MSL="主模式"
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){} /* EV8 */
        while(!(STM32_I2c1_Regs->sr1.all & I2C_TXE));
 
   for(i=0;i {
    /* Send I2C1 data */
    //I2C_SendData(I2C1, pDat[i]);
    STM32_I2c1_Regs->dr.bit.DR=pDat[i];


    /* Test on I2C1 EV8 and clear it */
    // 【TXE=1 數據寄存器空; 寫數據DR清除,START,STOP】  BTF="1:" 字節發送結束 TRA="數據已發送"  BUSY="在總線上正在進行數據通訊"  MSL="主模式"
    //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){;} /* EV8 */
    while(!(STM32_I2c1_Regs->sr1.all & I2C_TXE));
 
  }
   /* Send I2C1 STOP Condition */
   //I2C_GenerateSTOP(I2C1, ENABLE);
   STM32_I2c1_Regs->cr1.all|= I2C_EN|I2C_STOP;
   while(STM32_I2c1_Regs->sr2.bit.MSL);  //  0:從模式


}//end sub


//=============================================================================
//
//=============================================================================
void I2C_24CXX_Read(u16 nAddr, u8* pDat, u16 nLen)
{
 u16 i = 0;
 /* Enable I2C1 acknowledgement if it is already disabled by other function */
 //I2C_AcknowledgeConfig(I2C1, ENABLE);
        STM32_I2c1_Regs->cr1.bit.ACK=1;   //   ACK:應答使能 1:在接收到一個字節后返回一個應答(匹配的地址或數據)
 
 /* Send I2C1 START condition */
 //I2C_GenerateSTART(I2C1, ENABLE);
        STM32_I2c1_Regs->cr1.all|= I2C_EN|I2C_START;
 
 /* Test on I2C1 EV5 and clear it */
 // 【SB=1 起始條件已發送 讀SR1,然后寫數據DR 清零 】   MSL="1主模式"   BUSY="1" 在總線上正在進行數據通訊 )
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)){;}  /* EV5 */
 while(!(STM32_I2c1_Regs->sr1.bit.SB & I2C_SB)) ;
 
 /* Send 24CXX slave address for write */
 //I2C_Send7bitAddress(I2C1, ADDR_24CXX, I2C_Direction_Transmitter);
 STM32_I2c1_Regs->dr.bit.DR=ADDR_24CXX;


 /* Test on I2C1 EV6 and clear it */
 // 【ADDR=1  地址發送結束;讀SR1和SR2來清零 】。  TXE="1" 數據寄存器空 MSL="1" BUSY="1", TRA="1" 數據已發送
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)){;} /* EV6 */
 while(!(STM32_I2c1_Regs->sr1.all & I2C_ADDR)) ;
 STM32_I2c1_Regs->sr2.all;
 
 /* Send the low part of memory address */
 //I2C_SendData(I2C1, (u8)nAddr);
 STM32_I2c1_Regs->dr.bit.DR=(u8)nAddr;


 /* Test on I2C1 EV8 and clear it */
 // 【TXE=1 數據寄存器空; 寫數據DR清除,START,STOP】  BTF="1:" 字節發送結束 TRA="數據已發送"  BUSY="在總線上正在進行數據通訊"  MSL="主模式"
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)){} /* EV8 */
 while(!(STM32_I2c1_Regs->sr1.all & I2C_TXE));
 
 //====================================================================
 //I2C_GenerateSTART(I2C1, ENABLE);
        STM32_I2c1_Regs->cr1.all|= I2C_EN|I2C_START;
 
 /* Test on EV5 and clear it */
 // 【SB=1 起始條件已發送 讀SR1,然后寫數據DR 清零 】   MSL="1主模式"   BUSY="1" 在總線上正在進行數據通訊 )
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT)){;}  /* EV5 */
 
 while(!(STM32_I2c1_Regs->sr1.bit.SB & I2C_SB)) ;
 
 /* Send 24CXX slave address for read */
 //I2C_Send7bitAddress(I2C1, ADDR_24CXX, I2C_Direction_Receiver);
  STM32_I2c1_Regs->dr.bit.DR=(u8)ADDR_24CXX|((u8)0x01);


 /* Test on EV6 and clear it */
 // 【ADDR=1  地址發送結束;讀SR1和SR2來清零 】。  TXE="1" 數據寄存器空 MSL="1" BUSY="1", TRA="1" 數據已發送
 //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED)){;}  /* EV6 */
 
 while(!(STM32_I2c1_Regs->sr1.all & I2C_ADDR)) ;
 STM32_I2c1_Regs->sr2.all;
 
 for(i=0;i {
   if((i+1)>=nLen)
   {
     /* Disable I2C1 acknowledgement */
     //I2C_AcknowledgeConfig(I2C1, DISABLE);
     STM32_I2c1_Regs->cr1.bit.ACK=0;       //   ACK:應答使能   關閉
 
     /* Send I2C1 STOP Condition */
     //I2C_GenerateSTOP(I2C1, ENABLE);
     STM32_I2c1_Regs->cr1.all|= I2C_EN|I2C_STOP;
     while(STM32_I2c1_Regs->sr2.bit.MSL);  //  0:從模式 
 
   }
   /* Test on EV7 and clear it */
   // 【RXNE=1  數據寄存器非空; 讀寫DR清零 】 BUSY="1" 在總線上正在進行數據通訊 MSL="1" 主模式
   //while(!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_RECEIVED)){;}  /* EV7 */
     while(!(STM32_I2c1_Regs->sr1.all & I2C_RXNE)) ;
 
   /* Store I2C1 received data */
   //pDat[i] = I2C_ReceiveData(I2C1);
   pDat[i] = STM32_I2c1_Regs->dr.bit.DR;
 }


}//end sub


關鍵字:STM32  24C02函數  I2C例程 引用地址:STM32 24C02函數 I2C例程 非STM32庫方式

上一篇:STM32作為主機I2C,讀寫24C02 EEPROM
下一篇:STM32IO及定時器映射到地址

推薦閱讀

STM32(Cortex-M3)中有兩個優先級的概念——搶占式優先級和響應優先級,有人把響應優先級稱作'亞優先級'或'副優先級',每個中斷源都需要被指定這兩種優先級。具有高搶占式優先級的中斷可以在具有低搶占式優先級的中斷處理過程中被響應,即中斷嵌套,或者說高搶占式優先級的中斷可以嵌套低搶占式優先級的中斷。當兩個中斷源的搶占式優先級相...
最近寫了幾個程序,一個是用51單片機讀取模數傳感器adc0832的電壓值,一個是讀取ds1302的時間值,結果都出現了讀數一直為0的情況。我調試了近一個星期,修改了一個我認為不可能會錯的句子,程序運行成功了,這才發現了一個極其隱蔽的錯誤。(我用的是xp系統,用keil4軟件編譯)先上代碼:第一個為錯誤代碼,第二個為正確代碼。這是用來向ds1302芯片寫入命...
據臺媒中時電子報報道,臺灣興柜PCB廠相互股份有限公司因主要終端客戶華為受中美貿易戰影響,訂單嚴重下滑。該公司19日董事會通過決議,將臺灣廠現有訂單消化完畢之后停止生產,轉做運營總部,未來產能全數移至常熟廠,期望通過產線整并提升效益。相互表示,華為禁令15日生效,公司也從八月底就陸續收到模塊廠客戶暫停出貨通知,而華為分別占其2019年及202...
業內消息人士表示,無晶圓廠芯片廠商(Fabless)正尋求通過與制造伙伴密切合作,加強在5G射頻前端模塊(RF FEM)和其他設備市場的部署。據digitimes報道,消息人士稱,包括高通、Qorvo和Skyworks在內的射頻FEM的主要芯片供應商都擁有各自的生態系統合作伙伴,包括晶圓代工廠和封測廠,以擴大他們在5G射頻芯片市場的影響力。對于封測廠商來說,要求用于處理...

史海拾趣

問答坊 | AI 解惑

應用技巧/?PIC8位單片機匯編語言常用指令的識讀

摘 要: PIC單片機匯編指令格式介紹、指令對寄存器的操作及其他具體操作說明, 關鍵詞: Microchip pic 匯編 單片機 指令 作者: 成都 史為   各大類單片機的指令系統是沒有通用性的,它是由單片機生產廠家規定的,所以用戶必須遵循廠家 ...…

查看全部問答∨

FPGA控制網卡芯片數據收發如何判斷接到的是命令還是數據

我用FPGA控制網卡芯片做一個數據收發的東西,但是怎樣讓FPGA開始發送數據呢?具體就是, FPGA接收到命令就開始發數據,接收到數據就存儲,可是怎樣判斷接到的是命令還是數據呢?…

查看全部問答∨

bootloader 復位參數的設置問題

有點小問題,44b0,為什么一些教程里PCONA要復位成0x1ff?賣家給的芯片手冊上是0x3ff,其余端口也和手冊上不一樣。請問這個復位應該參考什么設置? 我開始沒在意,后來發現賣家的源碼也是0x1ff…

查看全部問答∨

為什么PCI總線最大的數據傳輸速率為133MB/s,這個是怎么計算出來的?

為什么PCI總線最大的數據傳輸速率為133MB/s,這個是怎么計算出來的?…

查看全部問答∨

關于速度環積分參數的問題

最近在用一臺負載較大的機床調試加工時,加工工件表面出現了抖紋。開始懷疑是增益太小導致的,后來通過一些輔助手段將增益提高了近一倍后,抖紋仍然存在。再思考各參數的作用,感覺可能跟速度環的積分時間常數有關系。于是通過增加積分時間常數來削 ...…

查看全部問答∨

DIY個電子負載

做電源,沒有負載是個麻煩事。因此想起來DIY個電子負載。   初步設想,使用STM32F103RCT6,因為它有兩個DAC,可以帶兩路負載。 它的ADC與DAC都是12位的。 [ 本帖最后由 dontium 于 2012-3-17 17:59 編輯 ]…

查看全部問答∨

基于LM3S9B92開發板的uCOS-II接口

官方網站上下載的,前兩天一直找這個,總算下來了,和大家分享一下。 其它的文本資料因為網上有很多了,在此就不在一一提供了。我也是初學者,剛看了不到一周的時間,也沒發現哪個資料特有用,因為都看不懂…… uCOS版本:v2.92 IAR版本:v6.10. ...…

查看全部問答∨

學模擬+有你陪伴,模擬之路不在難走i

本帖最后由 dontium 于 2015-1-23 11:42 編輯 博文鏈接:deyisupport./blog/b/analogwire/archive/2013/11/27/i2c.aspx 讀了簡易 I2C 隔離器設計小貼士之后,我發現其實很多模擬的很多東西并不是那么難懂,所以只要耐心學習還是能學 ...…

查看全部問答∨

as3933封裝問題

pcb新手剛畫封裝時遇到個問題,就是as3933的16-pin tssop package,它是16pin的,可官網的資料卻是20pin,如下圖 這個事按16pin還是20pin來畫呢? …

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 松潘县| 察雅县| 化隆| 原阳县| 资溪县| 吴旗县| 绩溪县| 定日县| 丘北县| 三门峡市| 利津县| 北流市| 安康市| 武鸣县| 长宁县| 南昌县| 彩票| 浙江省| 南和县| 大方县| 马鞍山市| 民勤县| 驻马店市| 玉田县| 万山特区| 绥德县| 吴桥县| 通化市| 清水县| 彭阳县| 铅山县| 静宁县| 体育| 通许县| 白朗县| 洛浦县| 卢湾区| 江门市| 平凉市| 陕西省| 喜德县|