久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2344|回復: 1
打印 上一主題 下一主題
收起左側

請教一下stm32f4硬件I2C速度異常的問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:686782 發表于 2021-3-18 23:36 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
最近用HK的32畫了一塊板子想測試一下芯片功能,用到了硬件IIC,因為我之前一直都是用的模擬IIC,沒接觸過硬件IIC,就花了點時間研究了一下網上的案例。測試的時候用的是正點的stm32f407探索者板子,依手冊PB6,7 或者PB8,9都可復用為I2C1,我就隨便挑了一組。寫完IIC幾個關鍵函數以后試著跑了一下中景園那個OLED的例程,屏的代碼是絕對沒問題的,大家用過都知道。硬件IIC運行成功,然后代碼里有一步是scroll刷屏顯示漢字,速度奇慢無比,與軟件IIC比起來差了三四倍,但是我的硬件IIC已經都配置成400KHZ了,照樣沒用。現在有兩個疑惑:
1.依原子的原理圖該I2C1 4.7K上拉,除了我自己掛載的OLED外,連接了器件24C02,MPU6050,WM8978,只啟動了I2C1總線,在沒有對這些器件使能編寫驅動的時候,他們是否也屬于掛在I2C1總線上,這樣的話,會不會是驅動能力不足的問題?(沒接觸過多個從機不太了解忘指教)
2.懷疑是IIC實現代碼出了問題,檢查ev5,ev6,ev8-2等事件時,需要重復進行檢測讀取,造成了巨大的卡頓。問一下各位大佬是因為這部分函數的問題嗎,如果是的話,我該怎么優化呢。


下附我參考別人修改的I2C程序。
  1. //PB6 PB7復用為SCL和SDA
  2. void I2C1_GPIO_Configuration(void)
  3. {
  4.   GPIO_InitTypeDef  GPIO_InitStructure;

  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  7.     GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//開漏,實現IIC線與
  8.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  9.     GPIO_InitStructure.GPIO_PuPd =   GPIO_PuPd_NOPULL;
  10.     GPIO_Init(GPIOB, &GPIO_InitStructure);
  11.     GPIO_PinAFConfig(GPIOB,GPIO_PinSource6,GPIO_AF_I2C1);
  12.     GPIO_PinAFConfig(GPIOB,GPIO_PinSource7,GPIO_AF_I2C1);
  13. }

  14. //I2C配置
  15. void I2C1_Configuration(void)
  16. {
  17.     I2C_InitTypeDef I2C_InitStructure;

  18.     I2C_DeInit(I2C1);
  19.     I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;//I2C模式
  20.     I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;//SCL占空比
  21.     I2C_InitStructure.I2C_OwnAddress1 = 0XA0;//主機地址      
  22.     I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
  23.     I2C_InitStructure.I2C_AcknowledgedAddress= I2C_AcknowledgedAddress_7bit;//七位地址
  24.     I2C_InitStructure.I2C_ClockSpeed = 400000;//400KHZ
  25.     I2C_Init(I2C1, &I2C_InitStructure);
  26.     I2C_Cmd(I2C1, ENABLE);                                             
  27. }

  28. //I2C初始化
  29. void I2C1_Init(void)
  30. {
  31.     RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);//I2C時鐘使能
  32.     RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//GPIO時鐘使能
  33.     I2C1_GPIO_Configuration();
  34.     I2C1_Configuration();
  35. }
  36. //起始信號  0成功 1失敗
  37. u8 I2C_Start(void)
  38. {
  39.     u16 time=0;
  40.     I2C_GenerateSTART(I2C1,ENABLE);
  41.     //檢查ev5事件
  42.     while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT)!=SUCCESS)
  43.     {
  44.         time++;
  45.         if(time>1000)
  46.         {
  47.             return 1;
  48.         }
  49.     }
  50.     return 0;
  51. }

  52. //結束信號
  53. void I2C_Stop(void)
  54. {
  55.         I2C_GenerateSTOP(I2C1,ENABLE);
  56. }

  57. //發送從設備地址
  58. u8 I2C_SendAddr(u8 addr)
  59. {
  60.     u32 event=I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED;//發送模式
  61.     u16 time=0;
  62.     I2C_Send7bitAddress(I2C1,addr,addr&0x01);
  63.    
  64.     if(addr&0x01)//判斷末位
  65.         event=I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED;//接收模式
  66.     //檢查ev6事件
  67.     while(I2C_CheckEvent(I2C1,event)!=SUCCESS)
  68.     {
  69.         time++;
  70.         if(time>1000)
  71.         {
  72.             return 1;
  73.         }
  74.     }
  75.     return 0;
  76. }

  77. //發送數據
  78. void I2C_SendDat(u8 data)
  79. {
  80.     I2C_SendData(I2C1,data);
  81. }

  82. //獲取應答信號
  83. u8 I2C_get_Ack(void)
  84. {
  85.     u16 time=0;
  86.     //檢查ev8-2
  87.     while(I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_BYTE_TRANSMITTED)!=SUCCESS)
  88.     {
  89.         time++;
  90.         if(time>1000)
  91.         {
  92.             return 1;
  93.         }
  94.     }
  95.     return 0;
  96. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:686782 發表于 2021-3-21 15:46 | 只看該作者
有沒有大佬能幫忙回復一下,麻煩了
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产激情在线播放 | 国产激情在线 | 中文字幕在线中文 | 91精品无人区卡一卡二卡三 | 黄色精品 | 蜜桃官网 | 麻豆久久精品 | 97超碰成人 | 黄色一级在线播放 | 亚洲综合一区二区三区 | 日韩一二三区 | 亚洲国产免费 | 日韩中文字幕一区 | 欧美视频在线观看 | 日韩精品一区二区三区在线观看 | 久久综合九九 | 午夜寂寞影院列表 | 亚洲精品国产第一综合99久久 | 在线精品观看 | 看片地址 | 小视频你懂得 | 九九伊人sl水蜜桃色推荐 | 亚洲福利视频一区二区 | 免费在线观看毛片 | 日韩成人在线免费观看 | 中文字幕在线一区 | 91免费观看视频 | 琪琪午夜伦伦电影福利片 | 中国一级特黄真人毛片免费观看 | 成人网av | 国产高清一区二区 | 综合九九 | 日韩电影中文字幕 | 性一区| 欧美6一10sex性hd | 一区二区三区四区免费观看 | 亚洲精品视 | 亚洲1区 | 81精品国产乱码久久久久久 | 在线播放中文字幕 | 久久激情视频 |