找回密码
 立即注册
查看: 82|回复: 6

为什么要把管脚输出设计成2选1模式?

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-20 10:01:57
已绑定手机

1

主题

2

回帖

13

积分

新手上路

积分
13
发表于 4 天前 | 显示全部楼层 |阅读模式
使用的是AI8051,用这个AICUBE时,本来P14用做CCP1输出PWM,P12,P13用做串口2,但是用这个软件时,就非得2选一,你选P14做CCP1时,P11,P12,P13功能都自动选为了CCP2,ECI,CCP0,不能做串口,你选P12,P13做串口P14就选不了做CCP1?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:961
  • 最近打卡:2026-07-22 07:54:56
已绑定手机

62

主题

2105

回帖

3182

积分

论坛元老

积分
3182
发表于 4 天前 | 显示全部楼层
引脚都有预定义,使用了某种功能可能其它引脚也被占用了
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-20 10:01:57
已绑定手机

1

主题

2

回帖

13

积分

新手上路

积分
13
发表于 4 天前 | 显示全部楼层
这个用寄存器方式时是可以独立配置的,用CCP1配置CCP1就可以,CCP0,CCP2都不用配置,不会占用串口管脚;它这里是直接被占用了;都没法配置串口;
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:780
  • 最近打卡:2026-07-21 12:14:31

9

主题

694

回帖

4838

积分

论坛元老

积分
4838
发表于 4 天前 | 显示全部楼层
不要太依赖自动生成的代码,辅助工具而已,不可能是完美的,生成的代码多数时候得自己微调下.
手工配置同时开启CCP1和UART2试试看.
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2026-07-21 09:31:46

851

主题

1万

回帖

2万

积分

管理员

积分
24394
发表于 3 天前 | 显示全部楼层
截图202607192301569384.jpg
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2026-07-21 09:31:46

851

主题

1万

回帖

2万

积分

管理员

积分
24394
发表于 3 天前 | 显示全部楼层

好的,我已经完整查看了该帖子的全部内容。下面为您总结并给出专业分析:


帖子内容摘要

标题: 为什么要把管脚输出设计成2选1模式?

楼主(rainch*)问题:**

  • 使用 AI8051,在 AiCube-ISP 自动代码生成工具中配置管脚功能
  • 希望:P1.4 做 CCP1 输出 PWM,P1.2/P1.3 做串口2
  • 问题:工具强制"2选1"——选了 P1.4 做 CCP1,P1.1/P1.2/P1.3 就被自动分配为 CCP2/ECI/CCP0,无法再配置为串口;反过来选串口2,P1.4 就不能选 CCP1

回复 2(楼主补充):

  • 实际用寄存器直接配置时是可以独立设置的——只配置 CCP1 相关寄存器即可,CCP0/CCP2/ECI 都不用管,不会占用串口管脚
  • 但 AiCube 工具强制捆绑了这些引脚,导致无法灵活配置

回复 3(网*):**

  • 建议不要太依赖自动生成的代码,辅助工具有局限性,生成的代码需要自己微调
  • 建议手工配置同时开启 CCP1 和 UART2

我的专业分析(作为 STC FAE)

楼主的判断完全正确。 这个问题出在 AiCube-ISP 自动代码生成工具的管脚分配逻辑上,而非芯片硬件本身。

硬件层面(芯片本身)

AI8051U 的 CCP/PCA 模块,其寄存器配置是独立的:

  • 您只需要设置 CCAPM1 寄存器使能 CCP1 的 PWM 输出模式
  • 设置 PCA_PWM1 等相关寄存器控制 PWM 参数
  • 不需要使能 CCP0、CCP2 或 ECI 功能,它们不会占用管脚

串口2(UART2)的管脚(P1.2/P1.3)与 CCP 功能在硬件上并不互斥,只要不配置对应管脚为 CCP 功能即可。

工具层面(AiCube-ISP)

AiCube 的图形化配置界面为了简化操作,将 CCP 模块的一组管脚(ECI、CCP0、CCP1、CCP2)做了捆绑式分配。一旦您选择了 CCP1 输出,工具就自动将整组管脚都分配为 CCP 功能,导致其他管脚无法再配置为串口。

解决方案

建议您采用手工配置寄存器的方式,参考以下思路:

// 1. 开启扩展寄存器访问
P_SW2 |= 0x80;

// 2. 配置 CCP1 为 PWM 输出模式(仅配置 CCP1,不涉及 CCP0/CCP2/ECI)
//    设置 P1.4 为 CCP1 输出脚
//    (具体寄存器值请参考 AI8051U 手册 CCP/PCA 章节)

// 3. 单独配置 UART2,使用 P1.2(TXD2) 和 P1.3(RXD2)
//    (配置 S2CON、S2BUF、AUXR 等寄存器)

// 4. 注意:如果 P1.4 的 CCP1 与 UART2 的管脚有功能脚切换选项,
//    需确保 P_SW2 中对应的功能脚切换位设置正确

总结: 这是 AiCube 工具的 GUI 设计局限,不是芯片硬件限制。手工写寄存器代码即可实现您想要的 **P1.4=CCP1 PWM + P1.2/P1.3=UART2** 的配置。


🔍 搜索 "https://www.stcaimcu.com/thread-24946-1-1.html"

⏱️ 查找用时 3.1s | 总回答用时 15.3s

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2026-07-20 10:01:57
已绑定手机

1

主题

2

回帖

13

积分

新手上路

积分
13
发表于 前天 10:01 | 显示全部楼层
神*** 发表于 2026-7-19 23:02
好的,我已经完整查看了该帖子的全部内容。下面为您总结并给出专业分析:

帖子内容摘要

那这个GUI后期会修改?我用STC单片机一直是沿用寄存器操作方式,AICUBE没用它上过工程代码,这次纯粹体验一下;如果是用STM32CUBE或者是别的国产的CUBE比如AT32,GD32的转用AICUBE会觉得这个设置有点奇怪,不能自由分配,还要到代码里修改,不能一次性设完;
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-22 10:31 , Processed in 0.076780 second(s), 77 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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