zxcv1973
发表于 2023-12-12 20:52:44
把主频设为36M,WTST = 0试试
13918210822
发表于 2023-12-13 10:09:41
社区闲人 发表于 2023-12-12 18:12
用STCH8K64U会更好,使用40MHZ外部晶振。
STC8H8K虽然是8位, GPIO的翻转速率实际能到多少? 是否有经验数据?
13918210822
发表于 2023-12-13 10:10:37
zxcv1973 发表于 2023-12-12 20:46
这么高的频率,CLK应该设为推挽输出
实际测试, 打开smith触发器情况下, 由于接收端输入阻抗比较大, 准双向和推挽对于波形和速率均无差异
13918210822
发表于 2023-12-13 10:16:59
本帖最后由 13918210822 于 2023-12-13 10:40 编辑
zxcv1973 发表于 2023-12-12 20:52
把主频设为36M,WTST = 0试试
之前测试, WTST=0, 最高实际测试能跑到32M, 超过后MCU内核不启动.
偶尔启动,不到1s跑飞.
由于看手册GPIO SFR赋值是单周期. 但是实际上只有理论速度1/10左右.
所有,我想找到原因. 看看是否可以优化.
社区闲人
发表于 2023-12-13 10:45:59
13918210822 发表于 2023-12-13 10:09
STC8H8K虽然是8位, GPIO的翻转速率实际能到多少? 是否有经验数据?
2019年时,我用刚刚出来的stc8h1k08做类似案子,IO口模拟SPI,4MHZ完成通信。使用32MHZ外部晶振。
现在STC8H8K64U的频率可达45MHZ, IO口模拟SPI,可实现5MHZ以上的速率完成通信。
zxcv1973
发表于 2023-12-13 10:58:05
13918210822 发表于 2023-12-13 10:16
之前测试, WTST=0, 最高实际测试能跑到32M, 超过后MCU内核不启动.
偶尔启动,不到1s跑飞.
把P45 ^= 1改为P45 = ~P45
社区闲人
发表于 2023-12-13 11:15:44
不要迷信带ICache的高主频MCU。尤其是STM32F103之类.
在IO翻转之类应用中,用8位机是最优选择。
13918210822
发表于 2023-12-13 11:54:00
zxcv1973 发表于 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.
13918210822
发表于 2023-12-13 12:00:22
社区闲人 发表于 2023-12-13 11:15
不要迷信带ICache的高主频MCU。尤其是STM32F103之类.
在IO翻转之类应用中,用8位机是最优选择。 ...
有空找个STC8H 8位开发板实际测试下, 但是,按照我对硬件的理解,IO速度在那里(如果规格书的数据是准确的),制约应该在Core上的指令序列和总线之类的。
神农鼎
发表于 2023-12-13 12:00:28
I/O的速度最快 20MHz ~ 30MHz