亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb_to_i2c.c

?? usb+源代碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
  /* Test on EV8 and clear it */
  //while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_BYTE_TRANSMITTED));
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1,  I2C_EVENT_MASTER_BYTE_TRANSMITTED))
  {
   	ErrorCount++; 
  }
  
  /* Send STOP condition */
  I2C_GenerateSTOP(I2C_1, ENABLE); //產(chǎn)生結(jié)束條件,一個字節(jié)操作結(jié)束

  return ErrorCount;
}

/**
  * @brief  Reads a block of data from the EEPROM.
  * @param  pBuffer : pointer to the buffer that receives the data read 
  *   from the EEPROM.
  * @param  ReadAddr : EEPROM's internal address to read from.
  * @param  NumByteToRead : number of bytes to read from the EEPROM.
  * @retval None
  */
u8 USB_I2C_BufferRead(unsigned char DevAddr, uint8_t* pBuffer, uint16_t ReadAddr, uint16_t NumByteToRead)
{  
  unsigned char ErrorCount = 0;
    /* While the bus is busy */
  while(I2C_GetFlagStatus(I2C_1, I2C_FLAG_BUSY));
  
  /* Send START condition */
  I2C_GenerateSTART(I2C_1, ENABLE);   //I2C產(chǎn)生起始條件
  
  /* Test on EV5 and clear it */
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1,  I2C_EVENT_MASTER_MODE_SELECT))  //設置主機模式
  {
   	ErrorCount++; 
  }
  
  /* Send EEPROM address for write */
  I2C_Send7bitAddress(I2C_1, DevAddr, I2C_Direction_Transmitter); //發(fā)送要操作的器件地址


  /* Test on EV6 and clear it */
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1,  I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) //等待結(jié)束
  {
   	ErrorCount++; 
  }

  /* Clear EV6 by setting again the PE bit */
  I2C_Cmd(I2C_1, ENABLE);

#ifdef EE_M24C08  
  
  /* Send the EEPROM's internal address to read from: Only one byte address */
  I2C_SendData(I2C_1, ReadAddr);  //發(fā)送要寫入的地址

#elif defined (EE_M24C64_32)

  /* Send the EEPROM's internal address to read from: MSB of the address first */
  I2C_SendData(I2C_1, (uint8_t)((ReadAddr & 0xFF00) >> 8));    //發(fā)送要寫入的地址,因為24C32的地址為兩個字節(jié),所以先發(fā)送高8位的地址

  /* Test on EV8 and clear it */
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
  //if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1,  I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)) //等待結(jié)束
  {
   	ErrorCount++; 
  }

  /* Send the EEPROM's internal address to read from: LSB of the address */
  I2C_SendData(I2C_1, (uint8_t)(ReadAddr & 0x00FF));   //因為24C32的地址為兩個字節(jié),后發(fā)送低8位的地址 

#endif /* EE_M24C08 */
  
  /* Test on EV8 and clear it */
  //while(!I2C_CheckEvent(I2C_EE, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); //等待發(fā)送結(jié)束
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1, I2C_EVENT_MASTER_BYTE_TRANSMITTED))
  {
   	ErrorCount++; 
  }
  
  /* Send STRAT condition a second time */  
  I2C_GenerateSTART(I2C_1, ENABLE);  //重新產(chǎn)生起始條件

  /* Test on EV5 and clear it */
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time, I2C_1, I2C_EVENT_MASTER_MODE_SELECT))
  {
   	ErrorCount++; 
  }
  
  /* Send EEPROM address for read */
  I2C_Send7bitAddress(I2C_1, DevAddr, I2C_Direction_Receiver);   //發(fā)送要操作的器件地址

  /* Test on EV6 and clear it */
  if(USB_I2C_CheckTimerEvent(ulTimeOut_Time,I2C_1, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED))  //等待接收
  {
   	ErrorCount++; 
  }
  
  /* While there is data to be read */
  while(NumByteToRead)  //每讀到一個字節(jié)就減1,為0則讀取完成
  {
    if(NumByteToRead == 1)
    {
      /* Disable Acknowledgement */
      I2C_AcknowledgeConfig(I2C_1, DISABLE); //設置應答位ACK為無效
      
      /* Send STOP Condition */
      I2C_GenerateSTOP(I2C_1, ENABLE); //產(chǎn)生停止條件
    }

    /* Test on EV7 and clear it */
    if(I2C_CheckEvent(I2C_1, I2C_EVENT_MASTER_BYTE_RECEIVED))  
    {      
      /* Read a byte from the EEPROM */
      *pBuffer = I2C_ReceiveData(I2C_1); //按長度讀取

      /* Point to the next location where the byte read will be saved */
      pBuffer++; 
      
      /* Decrement the read bytes counter */
      NumByteToRead--;     //每讀到一個字節(jié)就減1,為0則讀取完成   
    }   
  }

  /* Enable Acknowledgement to be ready for another reception */
  I2C_AcknowledgeConfig(I2C_1, ENABLE);  //使能應答位ACK為有效

    return ErrorCount;
}

void USB_I2C_ScanDev(unsigned char DevAddr)      
{
  __IO uint16_t SR1_Tmp = 0;

  do
  {
    /* Send START condition */
    I2C_GenerateSTART(I2C_1, ENABLE);

    /* Read I2C_EE SR1 register to clear pending flags */
    SR1_Tmp = I2C_ReadRegister(I2C_1, I2C_Register_SR1);

    /* Send EEPROM address for write */
    I2C_Send7bitAddress(I2C_1, DevAddr, I2C_Direction_Transmitter);

  }while(!(I2C_ReadRegister(I2C_1, I2C_Register_SR1) & 0x0002));
  
  /* Clear AF flag */
  I2C_ClearFlag(I2C_1, I2C_FLAG_AF);
  
  /* STOP condition */    
  I2C_GenerateSTOP(I2C_1, ENABLE);  
}


/**
  * @brief  Wait for EEPROM Standby state
  * @param  None
  * @retval None
  */
void USB_I2C_WaitEepromStandbyState(unsigned char DevAddr)      
{
  __IO uint16_t SR1_Tmp = 0;

  do
  {
    /* Send START condition */
    I2C_GenerateSTART(I2C_1, ENABLE);

    /* Read I2C_EE SR1 register to clear pending flags */
    SR1_Tmp = I2C_ReadRegister(I2C_1, I2C_Register_SR1);

    /* Send EEPROM address for write */
    I2C_Send7bitAddress(I2C_1, DevAddr, I2C_Direction_Transmitter);

  }while(!(I2C_ReadRegister(I2C_1, I2C_Register_SR1) & 0x0002));
  
  /* Clear AF flag */
  I2C_ClearFlag(I2C_1, I2C_FLAG_AF);
  
  /* STOP condition */    
  I2C_GenerateSTOP(I2C_1, ENABLE);  
}


void i2c_24c_byte_write(unsigned char Byte, unsigned char WriteAddr, unsigned int ByteToWrite, unsigned char EE24cBlockSelect,I2C_TypeDef *I2Cx)
{
        // Start the I2C
        I2C_GenerateSTART(I2Cx,ENABLE); //打開I2C,開始發(fā)送過程

      //not recommanded, stupid way
        while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_MODE_SELECT));  //設置主機模式

        I2C_Send7bitAddress(I2Cx,EE24cBlockSelect,I2C_Direction_Transmitter); //發(fā)送片選,選擇哪一片區(qū)域?qū)憽2C地址區(qū)分

        // when get ACK, means Set Success
        while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); //等待這次選擇過程完成

        I2C_SendData(I2Cx, WriteAddr);  //發(fā)送要寫入的地址碼

        while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); //等待字節(jié)發(fā)送完成

        I2C_SendData(I2Cx, Byte); //發(fā)送要寫的字節(jié)

        while(!I2C_CheckEvent(I2Cx, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); //等待直到字節(jié)發(fā)送完成
        
        I2C_GenerateSTOP(I2Cx, ENABLE); //發(fā)送過程結(jié)束。
}



#if 0


void USB_I2C_ReadTest(void)
{
  u8 temp;
  /* Initialize the I2C EEPROM driver ----------------------------------------*/
  //I2C_EE_Init();  

  /* First write in the memory followed by a read of the written data --------*/
  /* Write on I2C EEPROM from EEPROM_WriteAddress1 */
  I2C_EE_BufferWrite(Tx1_Buffer, EEPROM_WriteAddress1, BufferSize1); 

  /* Read from I2C EEPROM from EEPROM_ReadAddress1 */
  temp = USB_I2C_BufferRead(0xa0, Rx1_Buffer, EEPROM_ReadAddress1, BufferSize1); 

  /* Check if the data written to the memory is read correctly */
  //TransferStatus1 = Buffercmp(Tx1_Buffer, Rx1_Buffer, BufferSize1);

  printf("\r\n");
  if (temp == 0)
  {
    //printf("\r\nRead Buff1: OK!");
	printf("\r\nRead Buff1: %s", Rx1_Buffer);
  }
  else
  	{
    printf("\r\nRead Buff1: FAILED! Error: %d", temp);
    printf("\r\nRead Buff1: %s", Rx1_Buffer);
  }
  
  /* Wait for EEPROM standby state */
  //I2C_EE_WaitEepromStandbyState();
  USB_I2C_WaitEepromStandbyState(0xa0);  

  /* Read from I2C EEPROM from EEPROM_ReadAddress1 */
  temp = USB_I2C_BufferRead(0xa0, Rx2_Buffer, EEPROM_ReadAddress2, BufferSize2); 

  /* Check if the data written to the memory is read correctly */
  //TransferStatus1 = Buffercmp(Tx1_Buffer, Rx1_Buffer, BufferSize1);

  printf("\r\n");
  if (temp == 0)
  {
    //printf("\r\nRead Buff1: OK!");
	printf("\r\nRead Buff2: %s", Rx2_Buffer);
  }
  else
  	{
    printf("\r\nRead Buff2: FAILED! Error: %d", temp);
    printf("\r\nRead Buff2: %s", Rx2_Buffer);
  }
  

}





void USB_I2C_TEST(void)
{
  /* Initialize the I2C EEPROM driver ----------------------------------------*/
  I2C_EE_Init();  

  /* First write in the memory followed by a read of the written data --------*/
  /* Write on I2C EEPROM from EEPROM_WriteAddress1 */
  I2C_EE_BufferWrite(Tx1_Buffer, EEPROM_WriteAddress1, BufferSize1); 

  /* Read from I2C EEPROM from EEPROM_ReadAddress1 */
  I2C_EE_BufferRead(Rx1_Buffer, EEPROM_ReadAddress1, BufferSize1); 

  /* Check if the data written to the memory is read correctly */
  TransferStatus1 = Buffercmp(Tx1_Buffer, Rx1_Buffer, BufferSize1);
  
  printf("\r\n");
  if (TransferStatus1 == PASSED)
  {
    //printf("\r\nRead Buff1: OK!");
	printf("\r\nRead Buff1: %s", Rx1_Buffer);
  }
  else
  	{
    printf("\r\nRead Buff1: FAILED!");
    printf("\r\nRead Buff1: %s", Rx1_Buffer);
  }


  /* Wait for EEPROM standby state */
  I2C_EE_WaitEepromStandbyState();

  /* Second write in the memory followed by a read of the written data -------*/
  /* Write on I2C EEPROM from EEPROM_WriteAddress2 */
  I2C_EE_BufferWrite(Tx2_Buffer, EEPROM_WriteAddress2, BufferSize2); 

  /* Read from I2C EEPROM from EEPROM_ReadAddress2 */
  I2C_EE_BufferRead(Rx2_Buffer, EEPROM_ReadAddress2, BufferSize2);

  /* Check if the data written to the memory is read correctly */
  TransferStatus2 = Buffercmp(Tx2_Buffer, Rx2_Buffer, BufferSize2);

  if (TransferStatus2 == PASSED)
  {
    //printf("\r\nWrite/Read Buff2: OK!");
	printf("\r\nRead Buff2: %s", Rx2_Buffer);
  }
  else{
    printf("\r\nWrite/Read Buff2: FAILED!");
	printf("\r\nRead Buff2: %s", Rx2_Buffer);
  	}

}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费视频一区二区| 欧美在线观看一区| 久久免费午夜影院| 国产一区 二区| 久久不见久久见免费视频1| 欧美成人在线直播| 国产乱码精品一区二区三区忘忧草| 日韩亚洲欧美成人一区| 久久精品国产精品青草| 国产网站一区二区| 色综合天天综合| 亚洲bt欧美bt精品777| 欧美一区二区久久久| 国产在线观看一区二区| 中文av字幕一区| 欧美性猛交一区二区三区精品| 亚洲6080在线| 国产亚洲欧美激情| 色94色欧美sute亚洲线路一ni| 亚洲午夜三级在线| 精品国产污网站| 成人晚上爱看视频| 亚洲成人中文在线| 久久久蜜臀国产一区二区| 91免费国产在线观看| 蜜臀99久久精品久久久久久软件| 2020国产精品自拍| 91黄色免费版| 国产成人欧美日韩在线电影| 一区二区在线观看视频在线观看| 91精品国产91久久久久久一区二区| 狠狠色伊人亚洲综合成人| 亚洲视频在线一区观看| 日韩一级完整毛片| 日本韩国欧美三级| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美激情在线| 久久综合九色综合97婷婷| 欧美性欧美巨大黑白大战| 国产成人综合在线观看| 午夜av一区二区| 国产精品久久久久7777按摩 | 99精品欧美一区二区蜜桃免费 | 国产99久久久国产精品潘金| 亚洲一区自拍偷拍| 国产精品嫩草99a| 日韩视频一区在线观看| 91搞黄在线观看| 国产成人亚洲综合a∨婷婷| 午夜精品影院在线观看| 亚洲视频一区二区在线| 久久精品亚洲国产奇米99| 欧美丰满少妇xxxbbb| 91蜜桃视频在线| 成人免费的视频| 国产在线精品一区二区夜色| 午夜国产精品影院在线观看| 亚洲女同女同女同女同女同69| 久久影院视频免费| 日韩一级片在线观看| 欧美精品99久久久**| 欧美在线啊v一区| 91免费版在线| 99久久99精品久久久久久| 国产大片一区二区| 国产精品羞羞答答xxdd | 国产夫妻精品视频| 激情图区综合网| 精品一二三四区| 视频一区欧美日韩| 日日摸夜夜添夜夜添精品视频| 一级女性全黄久久生活片免费| 亚洲欧洲日产国码二区| 国产精品免费网站在线观看| 国产精品五月天| 国产精品三级电影| 国产精品区一区二区三| 中日韩av电影| 亚洲乱码日产精品bd| 亚洲日穴在线视频| 亚洲黄色片在线观看| 樱花草国产18久久久久| 午夜视黄欧洲亚洲| 免费在线看一区| 国产一区二区在线免费观看| 国产综合色产在线精品| 国产成人午夜视频| 成人av在线影院| 色老综合老女人久久久| 欧美色图在线观看| 91精品国产一区二区三区蜜臀| 欧美老肥妇做.爰bbww视频| 欧美一区二区三区系列电影| 日韩亚洲欧美在线| 欧美激情一二三区| 亚洲六月丁香色婷婷综合久久| 亚洲精选一二三| 首页国产丝袜综合| 国内外成人在线视频| 成人综合在线网站| 在线精品观看国产| 日韩一本二本av| 国产精品久久99| 亚洲国产日日夜夜| 久久99精品一区二区三区三区| 国产精品 日产精品 欧美精品| 成人aaaa免费全部观看| 欧美影院一区二区| 欧美mv和日韩mv国产网站| 日本一区二区成人在线| 亚洲一卡二卡三卡四卡无卡久久| 日本中文字幕一区| 国产激情精品久久久第一区二区| 91免费在线看| 精品美女一区二区| 亚洲精品一二三| 国产在线精品不卡| 欧美综合视频在线观看| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲婷婷综合久久一本伊一区| 偷拍自拍另类欧美| 成人理论电影网| 在线电影欧美成精品| 国产日韩欧美一区二区三区综合| 亚洲猫色日本管| 国产一区二区不卡老阿姨| 欧美最猛性xxxxx直播| 久久亚洲春色中文字幕久久久| 一区二区久久久| 国产激情视频一区二区三区欧美 | 一本一本久久a久久精品综合麻豆| 欧美老女人第四色| 国产精品成人在线观看| 国产美女精品在线| 亚洲午夜激情av| 成人黄色软件下载| 精品国产污污免费网站入口 | 一区二区三区四区视频精品免费 | 日韩av网站免费在线| 91免费版在线看| 欧美激情艳妇裸体舞| 蜜桃在线一区二区三区| 欧美在线免费视屏| 亚洲色图.com| 懂色av一区二区夜夜嗨| 欧美大片一区二区三区| 亚洲成人资源在线| 日本精品一区二区三区高清| 国产精品视频麻豆| 国产成人亚洲综合a∨婷婷图片| 日韩视频在线永久播放| 亚洲不卡av一区二区三区| 色婷婷综合久久久久中文 | 欧美不卡在线视频| 亚洲欧美综合网| 高清av一区二区| 欧美精品一区二| 另类人妖一区二区av| 欧美另类z0zxhd电影| 亚洲精品大片www| 一本大道久久a久久综合婷婷| 欧美无砖专区一中文字| 亚洲视频免费观看| 欧美手机在线视频| 日本va欧美va精品| 国产亚洲欧美日韩在线一区| 99久久综合国产精品| 亚洲综合在线电影| 欧美一级日韩不卡播放免费| 激情国产一区二区| 亚洲欧美色综合| 日韩色在线观看| 国产盗摄精品一区二区三区在线| 国产精品成人一区二区艾草| 欧美高清视频不卡网| 国产99一区视频免费| 亚洲第一成年网| 亚洲国产精品激情在线观看| 在线视频综合导航| 国产精品中文有码| 亚洲午夜久久久久久久久久久| 精品少妇一区二区三区日产乱码 | 26uuu欧美| 91麻豆福利精品推荐| 狠狠网亚洲精品| 亚洲最快最全在线视频| ww久久中文字幕| 欧美日韩在线观看一区二区| 国产精品一区在线观看你懂的| 亚洲国产精品一区二区久久| 国产视频一区二区三区在线观看| 欧美日韩中字一区| av亚洲精华国产精华精华| 美腿丝袜一区二区三区| 亚洲在线免费播放| 综合色中文字幕| 久久久久久99精品| 欧美一级夜夜爽| 欧美三级日韩三级国产三级| 国产98色在线|日韩|