找回密码
 立即注册
楼主: 13918210822

IO模拟一种2线接口(类似I2C, 但略有不同),请问一个细节如何实现为好

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-16 11:56:09

2

主题

186

回帖

1058

积分

金牌会员

积分
1058
发表于 2023-12-12 20:52:44 | 显示全部楼层
把主频设为36M,WTST = 0试试

点评

STC32F12K54建议最高主频跑 52MHz 以下 STC32F12K54, 由于 iCache的关系,时钟如在 18MHz ~ 52MHz, 都将 WTST = 1; 时钟不要高于52MHz, 这个STC32F是我们首次使用iCache 的 MCU, 还在改进中,会发展到 CPU@200MHz   发表于 2023-12-13 11:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2023-12-13 10:09:41 | 显示全部楼层
社区*** 发表于 2023-12-12 18:12
用STCH8K64U会更好,使用40MHZ外部晶振。

STC8H8K虽然是8位, GPIO的翻转速率实际能到多少? 是否有经验数据?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2023-12-13 10:10:37 | 显示全部楼层
zxcv*** 发表于 2023-12-12 20:46
这么高的频率,CLK应该设为推挽输出

实际测试, 打开smith触发器情况下, 由于接收端输入阻抗比较大, 准双向和推挽对于波形和速率均无差异
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2023-12-13 10:16:59 | 显示全部楼层
本帖最后由 13918210822 于 2023-12-13 10:40 编辑
zxcv*** 发表于 2023-12-12 20:52
把主频设为36M,WTST = 0试试

之前测试, WTST=0, 最高实际测试能跑到32M, 超过后MCU内核不启动.
偶尔启动,不到1s跑飞.

由于看手册GPIO SFR赋值是单周期. 但是实际上只有理论速度1/10左右.
所有,我想找到原因. 看看是否可以优化.

手册中IO速度

手册中IO速度

点评

STC32F12K54建议最高主频跑 52MHz 以下 STC32F12K54, 由于 iCache的关系,时钟如在 18MHz ~ 52MHz, 都将 WTST = 1; 时钟不要高于52MHz, 这个STC32F是我们首次使用iCache 的 MCU, 还在改进中,会发展到 CPU@200MHz   发表于 2023-12-13 11:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-06-17 07:05:23

24

主题

524

回帖

1228

积分

荣誉版主

积分
1228
发表于 2023-12-13 10:45:59 | 显示全部楼层
139182*** 发表于 2023-12-13 10:09
STC8H8K虽然是8位, GPIO的翻转速率实际能到多少? 是否有经验数据?

2019年时,我用刚刚出来的stc8h1k08做类似案子,IO口模拟SPI,4MHZ完成通信。使用32MHZ外部晶振。
现在STC8H8K64U的频率可达45MHZ, IO口模拟SPI,可实现5MHZ以上的速率完成通信。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-05-16 11:56:09

2

主题

186

回帖

1058

积分

金牌会员

积分
1058
发表于 2023-12-13 10:58:05 | 显示全部楼层
139182*** 发表于 2023-12-13 10:16
之前测试, WTST=0, 最高实际测试能跑到32M, 超过后MCU内核不启动.
偶尔启动,不到1s跑飞.

把P45 ^= 1改为P45 = ~P45
      

点评

STC32F12K54建议最高主频跑 52MHz 以下 STC32F12K54, 由于 iCache的关系,时钟如在 18MHz ~ 52MHz, 都将 WTST = 1; 时钟不要高于52MHz, 这个STC32F是我们首次使用iCache 的 MCU, 还在改进中,会发展到 CPU@200MHz   发表于 2023-12-13 11:59
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:559
  • 最近打卡:2025-06-17 07:05:23

24

主题

524

回帖

1228

积分

荣誉版主

积分
1228
发表于 2023-12-13 11:15:44 | 显示全部楼层
不要迷信带ICache的高主频MCU。尤其是STM32F103之类.
在IO翻转之类应用中,用8位机是最优选择。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2023-12-13 11:54:00 | 显示全部楼层
zxcv*** 发表于 2023-12-13 10:58
把P45 ^= 1改为P45 = ~P45

看了一个反汇编, 感觉有戏, 稍后好好测试一下.

; line 100:         P45 = 1;
        SETB     P45
; line 101:
; line 102: SETSMCK:
SETSMCK:
        CPL      P45                        ; Cycle 1
; line 103: //        P45 ^= 1;
; line 104:     P45 = ~P45;   
; line 105:         _nop_();
        NOP                                      ; Cycle 1, seize for sda cycle.
; line 106: //        _nop_();
; line 107: //        _nop_();
; line 108: //        _nop_();
; line 109:         goto SETSMCK;
        SJMP     SETSMCK                ; Cycle 2, Total 4 Cycles in single loop
               

; line 100:         P45 = 1;
        SETB     P45
; line 101:
; line 102: SETSMCK:
SETSMCK:
        MOV      C,P45                        ; Cycle 2
        CPL      C                                ; Cycle 1
        MOV      P45,C                        ; Cycle 2
; line 103:         P45 ^= 1;
; line 104: //    P45 = ~P45;   
; line 105:         _nop_();
        NOP                                      ; Cycle 1
; line 106: //        _nop_();
; line 107: //        _nop_();
; line 108: //        _nop_();
; line 109:         goto SETSMCK;
        SJMP     SETSMCK                ; Cycle 2, Total Cycle 8 in single loop.
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-03-10 16:08:45

6

主题

131

回帖

666

积分

高级会员

积分
666
发表于 2023-12-13 12:00:22 | 显示全部楼层
社区*** 发表于 2023-12-13 11:15
不要迷信带ICache的高主频MCU。尤其是STM32F103之类.
在IO翻转之类应用中,用8位机是最优选择。 ...

有空找个STC8H 8位开发板实际测试下, 但是,按照我对硬件的理解,IO速度在那里(如果规格书的数据是准确的),制约应该在Core上的指令序列和总线之类的。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:100
  • 最近打卡:2025-06-17 08:13:13

734

主题

1万

回帖

1万

积分

管理员

积分
16690
发表于 2023-12-13 12:00:28 | 显示全部楼层
I/O的速度最快 20MHz ~ 30MHz
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-17 23:54 , Processed in 0.382810 second(s), 103 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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