数码之家

 找回密码
 立即注册
搜索
查看: 4169|回复: 9

[C51] 折腾了1天 发个STC硬件SPI读写DS1302的套路

[复制链接]
发表于 2020-5-1 19:36:50 | 显示全部楼层 |阅读模式
本帖最后由 szb314 于 2020-5-1 19:49 编辑

DS1302不用多说,都知道了,算是3线半双工SPI了,度娘了一下,没有人发过STC 15W系列  硬件SPI驱动1302的方法,但是有类似的其它MCU的套路,借鉴了前人的经验图, 菜鸟一个水平有限,欢迎大神指导

改了一下电阻阻值,这个阻值不是唯一,,1K-20K都试过可以,具体多大更好,可以根据实际情况适当调整

刚开始走了坑路,飞线接在了有其它spi器件的板子上,死活没调试成功,后来上示波器一看波形就知道了,IO脚可能被其它器件拉低拉高导致异常,能读到数据才怪
后来直接飞线到最小系统板上,很快就读到正常数据了,,,,毕竟SPI速度要比IO模拟应该要快些,而且节省IO,所以还是有必要发个帖,给后人再挖个坑:lol:

废话不多说了,再贴一些简单代码和图片,,,转载请说明出处,谢谢!
  1. void InitSPI()                //STC 的SPI初始化
  2. {
  3.     SPDAT = 0;                  //初始化SPI数据
  4.     SPSTAT = SPIF | WCOL;       //清除SPI状态位           0xC0
  5.     SPCTL = 0xF2;  // 16分频@24Mhz       //1302最大时钟2MHz  要根据实际情况调整SPI 时钟频率
  6. }
复制代码

复制代码
  1. //-------------------------DS1302------------------------------//
  2. //sbit CS4 = P5^3;                  //1302片选
  3. sbit CS4 = P1^6;
  4. sbit CLK = P1^5;
  5. sbit DI  = P1^3;
  6. ////////////////////////////////
  7. //1302 SPI分频极限(@24MHz)
  8. // 4分频波形严重失真 无法读取
  9. // 8分频 操作16bit 约需8us
  10. //16分频 操作16bit 约需14us 推荐
  11. //32分频 操作16bit 约需25us

  12. u8 DS1302_SPI_READ(u8 cmd)                  // 约需14us (@24MHz)
  13. {
  14. u8 a;

  15.    CS4 = 1; //1302片选
  16.    SPI_Cmd_8bit(cmd); //发送读取命令
  17.    SPI_Cmd_8bit(0x00);//发送8位0 (8个CLK)以便读取数据
  18.    CS4 = 0; //取消片选

  19.    a= SPDAT;
  20.    return a;  //返回读取值
  21. }

  22. void DS1302_SPI_WRITE(u8 cmd,u8 dat)         // 约需14us (@24MHz)
  23. {

  24.    CS4 = 1; //1302片选
  25.    SPI_Cmd_8bit(cmd); //发送读取命令  
  26.    SPI_Cmd_8bit(dat);//发送8位0 (8个CLK)以便读取数据
  27.    CS4 = 0; //取消片选

  28. }

  29. void SPI_Cmd_8bit(u8 WR_DAT)               
  30. {                                                      
  31.         SPDAT = WR_DAT;              // 写入数据
  32.         while (!(SPSTAT & SPIF));     //等待SPI数据传输完成
  33.         SPSTAT = 0xc0;  //清除SPI状态
  34. }
复制代码




再贴几张图,请无视示波器的渣渣解码功能:lol:
8分频


16分频


32分频



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

打赏

参与人数 1家元 +50 收起 理由
家睦 + 50

查看全部打赏

发表于 2020-5-1 20:32:24 | 显示全部楼层
我是来参观示波器的,真的很漂亮
回复 支持 反对

使用道具 举报

发表于 2020-5-1 21:33:32 | 显示全部楼层
硬件SPI一半不会出啥问题,只要把软件会话层写好就没问题了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 14:25:04 | 显示全部楼层
la45088d1 发表于 2020-5-1 21:33
硬件SPI一半不会出啥问题,只要把软件会话层写好就没问题了。

这个俗称斯特惨的硬件SPI还是有些问题的,暂时无法驾驭,只可避免,说不好是它硬件底层驱动的问题....反正给那个牛鼻手机号打电话,他们肯定没有问题,有问题的一定是写代码的小白:lol:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 14:28:55 | 显示全部楼层
bg4rff 发表于 2020-5-1 20:32
我是来参观示波器的,真的很漂亮

最低套路价应该3千大洋的样子,我这个还是买贵了几百
回复 支持 反对

使用道具 举报

发表于 2020-5-2 16:40:20 | 显示全部楼层
szb314 发表于 2020-5-2 14:25
这个俗称斯特惨的硬件SPI还是有些问题的,暂时无法驾驭,只可避免,说不好是它硬件底层驱动的问题....反正给 ...

有问题的时候也不一定敢说出来。:lol:
现在爱好者圈子也开始饭圈化了,有人说了一下STC那垃圾的硬件机制,事实摆在那里结果还是有几个憨憨跑过来喷LZ,反正我是怕了。
STC对某些人来说简直是神圣不可侵犯的存在,哪怕宣传再恶心。:sweat:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 19:18:19 | 显示全部楼层
la45088d1 发表于 2020-5-2 16:40
有问题的时候也不一定敢说出来。
现在爱好者圈子也开始饭圈化了,有人说了一下STC那垃圾的硬件机制, ...

没有必要喷来喷去的,,人无完人,何况东西,缺陷哪个都有,,虽然渣渣,一些场合用用还可以,,如果没有人支持,怕是以后渣渣都没有啦,,性价比就不扯了,毕竟你一个板子上不可能满板子都是mcu,和那些高大上的差不了多少钱,算是支持国货吧:lol:
回复 支持 反对

使用道具 举报

发表于 2020-5-2 19:21:37 | 显示全部楼层
szb314 发表于 2020-5-2 19:18
没有必要喷来喷去的,,人无完人,何况东西,缺陷哪个都有,,虽然渣渣,一些场合用用还可以,,如果没有人支持,怕 ...

如果姚老板能把官网的炼丹炉撤掉,再给STC最新的芯片加个好的调试接口,硬件Bug也干掉,再售卖或者开源相应的调试器,我举双手赞成!:lol:
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-2 19:29:34 | 显示全部楼层
la45088d1 发表于 2020-5-2 19:21
如果姚老板能把官网的炼丹炉撤掉,再给STC最新的芯片加个好的调试接口,硬件Bug也干掉,再售卖或者开源相 ...

除非他愿意请你吃饭,听你唠叨,否则没可能,,硬件底层固件那不是一天两天能解决的了...:lol:
回复 支持 反对

使用道具 举报

发表于 2020-5-2 23:40:16 | 显示全部楼层
szb314 发表于 2020-5-2 19:29
除非他愿意请你吃饭,听你唠叨,否则没可能,,硬件底层固件那不是一天两天能解决的了... ...

舍得花钱买IP就行了,话说如果真的需要仿真接口,为什么不用别的芯片
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-6 12:24 , Processed in 0.187201 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

快速回复 返回顶部 返回列表