找回密码
 立即注册
查看: 2147|回复: 22

【已解决】PCA模块问题求助,PCA3不能开启

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-8 12:06:08 | 显示全部楼层 |阅读模式
本帖最后由 一笔长空 于 2023-7-15 16:34 编辑

芯片是8A8K64D4,内部有4路pca模块,我要用其8位PWM功能,因为只用一路信号所以我就开启了第四路,也就是PCA模块3,问题来了,怎么设置都不能启动,同样的代码模块0,1和2都可以,代码改成模块3的就没信号输出,研究一天了,太奇怪了.
下面附代码:        
    P_SW1|=0X10;
    CCON = 0x00;
    CMOD = 0x08;                                //PCA时钟为系统时钟
    CL = 0x00;
    CH = 0x00;
    CCAPM3 = 0x42;                              //PCA模块3为PWM工作模式
    PCA_PWM3 = 0x00;                            //PCA模块3输出8位PWM
    CCAP3L = 0x20;                              
    CCAP3H = 0x20;
    CR=1;//启动pca
这个代码P26口始终没输出,也测试了P26口没有坏,推挽模式和准双向都试了都不行,而把代码里的数字3全部换成数字2,其它的什么都不动,也就是启用模块2他就正常了,P25口就能量到信号,求大佬解答



回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-7-8 13:31:32 | 显示全部楼层
一笔*** 发表于 2023-7-8 12:09
一模一样的代码,为什么模块0.1.2,可以,模块3就不行,模块3是需要什么特殊设置吗 ...

模块3的寄存器分配在XFR区域
1.png

配置模块3,必须间P_SW2的最高为设置为1,代码如下:
P_SW2 |= 0x80;

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-8 12:09:44 | 显示全部楼层
一模一样的代码,为什么模块0.1.2,可以,模块3就不行,模块3是需要什么特殊设置吗

点评

模块3的寄存器分配在XFR区域 配置模块3,必须间P_SW2的最高为设置为1,代码如下: P_SW2 |= 0x80;  详情 回复 发表于 2023-7-8 13:31
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-8 15:02:17 | 显示全部楼层
zh*** 发表于 2023-7-8 13:31
模块3的寄存器分配在XFR区域

非常感谢版主您的解答,要是没有您告诉我哪怕再研究一个月把PDF翻烂了到最后不用STC了也不知道答案,现在连pwm模块无法启用的问题也解决了,还以为是片子没这功能或者坏了,再次感谢!
是不是地址为1字节的寄存器都是SFR,地址为2字节的都是XFR使用时要将EAXFR置1?

点评

Q:是不是地址为1字节的寄存器都是SFR,地址为2字节的都是XFR使用时要将EAXFR置1? A:是这样的  详情 回复 发表于 2023-7-8 16:46
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:38
  • 最近打卡:2025-04-30 14:38:57

25

主题

977

回帖

3599

积分

超级版主

积分
3599
发表于 2023-7-8 16:46:02 | 显示全部楼层
一笔*** 发表于 2023-7-8 15:02
非常感谢版主您的解答,要是没有您告诉我哪怕再研究一个月把PDF翻烂了到最后不用STC了也不知道答案,现在连 ...

Q:是不是地址为1字节的寄存器都是SFR,地址为2字节的都是XFR使用时要将EAXFR置1?
A:是这样的
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-8 22:27:29 | 显示全部楼层
zh*** 发表于 2023-7-8 16:46
Q:是不是地址为1字节的寄存器都是SFR,地址为2字节的都是XFR使用时要将EAXFR置1?
A:是这样的 ...

感谢版主zhp,问题解决了,太感谢了,祝您生活愉快,再见
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-7-13 15:57:29 | 显示全部楼层
STC8A8K64D4-PCA相关程序.rar (77.5 KB, 下载次数: 105)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-15 15:39:33 | 显示全部楼层

感谢梁老师,很好的程序比自己写的好多了。
请问有没有关于ID号加密的范例程序或者应用程序,STC-ISP里只有读取ID号的,具体怎么用这个ID号进行加密不太明白,去了好多论坛也没找到具体程序,现在怎么在rom留出7字节的空间不知道如何操作,ID号校验不通过如何销毁程序不会操作,希望有这方面的范例程序,感谢老师。

点评

STC ISP里的ID号加密的“帮助”里有详细使用说明。 ID号加密是根据用户所设定的算法对ID号的7个字节进行分别运算,每种加密算法最多可以进行4次 不同的运算,运算符不分优先级,从前到后依次进行4次运算,对于同一  详情 回复 发表于 2023-7-15 16:20
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2025-05-02 10:07:51

73

主题

5883

回帖

1万

积分

超级版主

积分
12081
发表于 2023-7-15 16:20:23 | 显示全部楼层
一笔*** 发表于 2023-7-15 15:39
感谢梁老师,很好的程序比自己写的好多了。
请问有没有关于ID号加密的范例程序或者应用程序,STC-ISP里只 ...

STC ISP里的ID号加密的“帮助”里有详细使用说明。

1.png



ID号加密是根据用户所设定的算法对ID号的7个字节进行分别运算,每种加密算法最多可以进行4次
不同的运算,运算符不分优先级,从前到后依次进行4次运算,对于同一个加密算法,ID号的7个字节是
分别使用此算法进行运算,运算完成后会得到加密后的7个字节,在下载用户代码时,加密后的7个字节
会自动写入到用户所指定的FLASH中
例如:
  当前芯片内部的ID号为 : 01H 02H 03H 04H 05H 06H 07H
  选择的加密算法为         : <<1, +2, *3, ^4
  设定的存储地址为         : 0x1000
  经加密运算后的ID号为  :  08H 16H 1CH 1AH 20H 2EH 34H
  下载程序过程中,加密的ID号会被写入到FLASH的0x1000~0x1006地址中
  08H写入到0x1000, 16H写入到0x1001, 1CH写入到0x1002, 1AH写入到0x1003, 20H写入到0x1004,
  2EH写入到0x1005, 34H写入到0x1006

目前版本提供两种加密方式,可将ID号使用两种不同的方式加密后写入到不同的地址中每种加密方式
中可进行4步运算,每一步运算可选择下面的7种运算方法:
+ : 加法运算  - : 减法运算  * : 乘法运算  / : 除法运算  
<<: 左移运算  >>: 右移运算  ^ : 异或运算

对于运算操作数,只接受10进制数的输入,有效的数据为0~255,超出范围的数,高位会被自动舍弃.
例如输入257(102H),则实际参加运算的术为2(02H)
所有的运算都是基于单字节的,高低字节之间不会产生进位和借位,即低字节运算后如果产生进位
或借位将直接舍弃,而不参与高字节的运算

例如:
  如果ID号为       : 01 02 03 04 ff fe fd
  加密方式为       : "+255, +0, +0, +0"
  则加密后的数据为 : 00 01 02 03 fe fd fc

注意事项:
  若是将ID号加密和程序加密后传输这两种功能结合起来同时使用时,则必须在原代码加密前,将需
  要写入加密ID号的地址空间预留为FF,然后在对程序文件进行加密(若下载时需要将HEX空白区域
  填充为00时,也需要执行此操作将区域保留)
  例如:
    我现在需要将ID号加密后写入到程序空间1000H开始的地址,那么我必须在我的源代码中,
    将1000H~1006H这7个字节保留,并定义为FFH(不能为00H)


回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:350
  • 最近打卡:2025-05-02 10:53:24
已绑定手机

14

主题

145

回帖

498

积分

中级会员

积分
498
发表于 2023-7-15 16:25:06 | 显示全部楼层
梁*** 发表于 2023-7-15 16:20
STC ISP里的ID号加密的“帮助”里有详细使用说明。

感谢梁老师,现在知道原理后不知道具体代码怎么写,比如我现在需要将ID号加密后写入到程序空间1000H开始的地址,那么我必须在我的源代码中,将1000H~1006H这7个字节保留,并定义为FFH,像这种操作如何用C语言写,如何有范例程序就再好不过了

点评

放在跟程序不重叠的地址,就不需要在程序中预留位置。用CODE指针读出来即可。  详情 回复 发表于 2023-7-17 11:51
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-3 13:01 , Processed in 0.144569 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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