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

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

[复制链接]
  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

    积分
    664
    发表于 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口就能量到信号,求大佬解答



    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    722

    回帖

    2574

    积分

    超级版主

    积分
    2574
    发表于 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;

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

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

    点评

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

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

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

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

    点评

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

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    16

    主题

    722

    回帖

    2574

    积分

    超级版主

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

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

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

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

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

    使用道具 举报

    该用户从未签到

    46

    主题

    3029

    回帖

    6827

    积分

    超级版主

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

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

    积分
    664
     楼主| 发表于 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
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    3029

    回帖

    6827

    积分

    超级版主

    积分
    6827
    发表于 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)


    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 94 天

    [LV.6]常住居民II

    12

    主题

    88

    回帖

    664

    积分

    高级会员

    积分
    664
     楼主| 发表于 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, 2024-5-17 10:08 , Processed in 0.086722 second(s), 76 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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