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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

STC8A單片機硬件IIC驅動DS3231M芯片失敗的問題

  [復制鏈接]
跳轉到指定樓層
樓主
這個項目在開發板上運行是沒有問題的


使用的是DS3231的sop16封裝的芯片,某寶上買的模塊



功能測試通過后制作成小板



小板上用的是DS3231M的sop8芯片



調試了很多天STC8A單片機始終無法與DS3231M通訊,最多只能讀取一秒的時間就卡死的IIC應答上







原理圖



PCB正面



PCB反面



PCB上沒有給IIC上拉電阻,但是在單片機內部上拉的4.7k的電阻,單片機寄存器初始化情況


DS3231驅動代碼如下
  1. void Wait(){//I2C應答
  2. unsigned char a=0;
  3. while(!(I2CMSST&0x40)&&++a);
  4. I2CMSST&=~0x40;
  5. }
  6. void Start(){//發送START命令
  7. I2CMSCR=0x01;
  8. Wait();
  9. }
  10. void SendData(unsigned char dat){//發送數據
  11. I2CTXD=dat;
  12. I2CMSCR=0x02;
  13. Wait();
  14. }
  15. void RecvACK(){//接收ACK
  16. I2CMSCR=0x03;
  17. Wait();
  18. }
  19. void SendACK(){//設置ACK信號
  20. I2CMSST=0x00;
  21. I2CMSCR=0x05;
  22. Wait();
  23. }
  24. void SendNAK(){//設置NAK信號
  25. I2CMSST=0x01;
  26. I2CMSCR=0x05;
  27. Wait();
  28. }
  29. char RecvData(){//接收數據
  30. I2CMSCR=0x04;
  31. Wait();
  32. return I2CRXD;
  33. }
  34. void Stop(){//發送STOP命令
  35. I2CMSCR=0x06;
  36. Wait();
  37. }
  38. unsigned char DS3231_read(unsigned char site){//DS3231讀取
  39. P_SW2|=B(1000,0000);
  40. Start();
  41. SendData(0xD0);
  42. RecvACK();
  43. SendData(site);
  44. RecvACK();
  45. Start();
  46. SendData(0xD1);
  47. RecvACK();
  48. site=RecvData();
  49. SendNAK();
  50. Stop();
  51. P_SW2&=B(0111,1111);
  52. return site;
  53. }
  54. void DS3231_wirte(unsigned char site,unsigned char dat){//DS3231寫入
  55. P_SW2|=B(1000,0000);
  56. Start();
  57. SendData(0xD0);
  58. RecvACK();
  59. SendData(site);
  60. RecvACK();
  61. SendData(dat);
  62. RecvACK();
  63. Stop();
  64. P_SW2&=B(0111,1111);
  65. }
復制代碼
搞定可以送個小紅包
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:155507 發表于 2020-7-18 18:33 | 只看該作者
需要上拉電阻 4k7 在SDA和SCL  IIC接口

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

板凳
ID:401564 發表于 2020-7-19 13:34 | 只看該作者
在下載器那設定單片機的時鐘為6MHZ試一下

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

地板
ID:687694 發表于 2020-7-19 18:04 | 只看該作者
當年51芯片確實內部有上拉電阻,STC8也有,不過好像記得在數據手冊上看過需要打開上拉才可以,默認是高阻態。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:161785 發表于 2021-5-11 20:30 來自觸屏版 | 只看該作者
3231應該有上拉電阻。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

6#
ID:890869 發表于 2021-8-20 22:04 | 只看該作者
樓主解決了嗎,看樓主代碼上拉電阻是使能了的,問題出在哪呢。難道是內部上拉電阻只有4.1k造成的嗎。

評分

參與人數 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

7#
ID:541008 發表于 2021-12-21 08:54 | 只看該作者
有沒有是因為驅動能力不足的原因
回復

使用道具 舉報

8#
ID:71233 發表于 2021-12-21 11:45 | 只看該作者
我一般用模擬IIC驅動,不用內部的IIC驅動。使用芯片內置IIC驅動需要設置什么寄存器吧。
回復

使用道具 舉報

9#
ID:437129 發表于 2025-1-19 20:17 | 只看該作者
Y_G_G 發表于 2020-7-19 13:34
在下載器那設定單片機的時鐘為6MHZ試一下

師傅在上,請受我一拜!
我也遇到同樣問題了,折騰了一個禮拜了沒結果。
按師傅的方法燒錄改為6M,直接成功。
回復

使用道具 舉報

10#
ID:1034262 發表于 2025-1-19 23:11 | 只看該作者
dsbk123 發表于 2025-1-19 20:17
師傅在上,請受我一拜!
我也遇到同樣問題了,折騰了一個禮拜了沒結果。
按師傅的方法燒錄改為6M,直接 ...

那就是I2C速度太快了。STC8系列的MCU速度很快的,操作IO值需要一個時鐘。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美视频一二三区 | 中文字幕在线资源 | 欧美精品第一页 | 精品国产乱码久久久久久88av | 黄色三级av | 成人爱爱 | 一区二区三区在线免费 | 亚洲网在线 | 日本香蕉视频 | 中文字幕一级片 | 人人射人人 | 欧美黄色片视频 | 国产黄色免费视频 | 黄色大片av | 激情四射网站 | 欧美在线日韩 | 丁香激情五月 | 99久久婷婷 | 亚洲精品91天天久久人人 | 国产精品一区二区不卡 | av狠狠干| 精品福利在线 | 日本www色 | 日韩av不卡在线观看 | 高清一级片 | 黄色一级在线观看 | 亚洲成人国产 | 国产在线小视频 | www午夜| 午夜亚洲精品 | 国产午夜精品一区二区三区视频 | 黄色免费毛片 | 欧美成人免费在线视频 | 欧美在线网址 | 黄视频在线播放 | 成人一区二区视频 | 久久精品欧美一区二区三区不卡 | av免费资源 | www.huangse| 欧美一区二区在线 | 国产欧美在线 |