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

專注電子技術學習與研究
當前位置:單片機教程網 >> STM32 >> 瀏覽文章

STM8S BUG的一點總結

作者:CNTSW   來源:CNTSW的博客   點擊數:  更新時間:2014年06月03日   【字體:

CNTSW大俠寫的很透徹給大家分享一下 

意法半導體的STM8S 系列單片機價格很便宜,外圍資源很豐富,開始就果斷選擇了這款單片機 (STM8S103F3P)沒使用不知道,使用后心里各種不爽。主要就是它的I2C熱的禍。不知道是不是專利原因,意法的I2C做的很復雜,很別扭。官網上公布的Erratasheet就不搬過來了。針對I2C總線總是被鎖死的情況,我目前采取的辦法是(功能是主機向從機發送一個字節的數據):

主機:(STM32F103)
1.開啟事件中斷,關閉緩存中斷。
2.通過BTF被置位引起的中斷來寫下一字節的數據。
中斷響應函數中僅僅判斷三個點:
1.Start發送完后的SB置位,按手冊說的寫地址到DR寄存器后清除該事件;
2.地址發送完后的ADDR位,按手冊說的,讀SR2寄存器清除改事件;然后寫第一字節的數據
3.BTF觸發中斷,發送STOP
4.關閉I2C外設,防止干擾信號導致I2C鎖死。如果中斷處理函數中遇到其他情況就RESET下I2C。
從機:(STM8S103F3P)
只開事件中斷
中斷響應函數:
static u8 progress來記下當前的進程,用Switch語句,有點類似于Verilog HDL里寫狀態機的那個,讓進程只能按照switch里的順序執行,如果有問題就RESET,看下面的。
  uchar dat;
  static uchar progress;
  EXIT_PD_DISABLE
  switch(progress)
  {
  case 0:
    if(I2C_SR1_ADDR==1) //地址匹配
    {
      if(I2C_SR3_TRA==1) //發送
        progress=1;
      else
        progress=2;
    }
    else //ERROR
    {
      Reset();
      progress=0;
    }
    break;
  case 1://發送模式

    Reset();
    progress=0;
    break;
  case 2://接收模式
      dat=I2C_DR;
      if(dat>0xa0) dat=0xa0; 
      Reset();
      progress=0;
      break;
  }
 
除了I2C本身的BUG 據我目前所知,I2C和外部中斷也有沖突,具體是I2C和GPIOA的外部中斷,這個在Erratasheet里也有提到。當這兩個中斷同事要響應時GPIOA的中斷不會被響應,而是等I2C的中斷結束一段時間后,才開始響應。
另外還有一個,就是如果I2C的中斷被打開后GPIOD如果有設置為輸入口的,GPIOD的外部中斷會自動被打開,即使GPIOD的CR2寄存器全為0 不知道怎么回事,目前還沒更加具體的去查找是什么原因。但是這個在Erraratasheet里面沒有提及。
 
總之,得出了一個結論
1、用STM8S 盡量不要去碰硬件I2C,好多麻煩,STM32確實有人很好的繞過BUG而且用的也很好,很穩定。不知道怎么弄得。
2、以后再做什么東西,要先下載那個單片機的Erratasheet,大致翻下心里有個數,這樣至少不會讓自己一直陷入一個死胡同,最后卻發現是硬件BUG的原因。
3、看英文原版的DataSheet,英文要練好啊,什么東西讓人翻譯過來反而更加難理解。甚至我用的STM8S里的寄存器手冊里還有致命的翻譯所悟,弄得我搞了半天沒搞好。
關閉窗口

相關文章

主站蜘蛛池模板: 黄色欧美视频 | 亚洲精品成人在线 | 亚洲精选久久 | 玖玖操| 日韩有码一区 | 精品久久久久久久久久久久 | 一区二区av | 中文字幕一区二区三区日韩精品 | 久久精品国产一区老色匹 | 一区二区福利视频 | 日本五月婷婷 | 国产精品免费在线 | 51ⅴ精品国产91久久久久久 | 久久中文字幕av | 一二三四在线视频观看社区 | av在线一区二区三区 | 欧美日韩综合一区 | 成人免费小视频 | 99久久婷婷国产综合精品 | 亚洲综合热 | 国产欧美一区二区三区在线看蜜臀 | 18gay男同69亚洲网站 | 日日干干 | 国产高清免费视频 | 琪琪午夜伦伦电影福利片 | 久久精品91久久久久久再现 | 久久久久久久一区二区三区 | 国产91在线 | 欧美 | 国产精品久久久久久久午夜 | 日日操视频 | 欧美国产一区二区 | 日本 欧美 国产 | 亚洲色图插插插 | 高清欧美性猛交xxxx黑人猛交 | 91精品国产色综合久久不卡98口 | 成人福利片 | 天天综合国产 | 久久成人av | 欧美1—12sexvideos | 国外成人在线视频网站 | 亚洲国产精品久久久 |