王昱顺 发表于 2024-10-31 13:50:06

荣誉版主 山东.王,2024/10 技术漫步,共享,技术回复 索引

本帖最后由 王昱顺 于 2024-10-31 15:38 编辑

1.开源小工具-自动生成IO配置代码

小工具目前正在不断丰富!希望大家提出更多更好的建议
Ai IO配置小工具 - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 国芯技术交流网站 - AI32位8051交流社区



2.开源小工具-自动生成外设引脚切换配置代码
Ai8051专享 引脚切换 配置小工具 - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 国芯技术交流网站 - AI32位8051交流社区


3.开源小工具-自动生成外设引脚切换配置代码
Ai8051U 专用小工具 时钟树配置,自动代码生成小工具 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯技术交流网站 - AI32位8051交流社区



4.STC-FOC Lite制作完整流程详解
STC-FOC Lite制作完整流程详解 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

5.STC-FOC Lite程序详解-SVPWM查表生成
STC-FOC Lite程序详解-SVPWM查表生成 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

6.STC-FOC Lite程序详解-PID单环控制
STC-FOC Lite程序详解-PID单环控制 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

7.STC-FOC Lite程序详解-不同控制模式的实现
STC-FOC Lite程序详解-不同控制模式的实现 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

8.STC-FOC Lite程序详解-程序自校准
STC-FOC Lite程序详解-程序自校准 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

9.STC-FOC Lite程序详解-CAN通讯协议实现
STC-FOC Lite程序详解-CAN通讯协议实现 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区

10.STC-FOC Lite程序详解-如何快速更改为串口控制
STC-FOC Lite程序详解-如何快速更改为串口控制 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区


11.可行性验证成功,DMA串口实现4路可控高速脉冲
可行性验证成功,DMA串口实现4路可控高速脉冲 - 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区




王昱顺 发表于 2024-10-31 13:50:39

本帖最后由 王昱顺 于 2024-11-1 13:51 编辑

技术回复:
问题1:
各位大神,知道不知道,梁工的三相无刷电机驱动STC8H-带HALL这几句最下面的channel有赋值吗?如有在那里赋的值。
u16      Get_ADC10bitResult(u8 channel)      //channel = 0~15
{
      u8 i;
      ADC_RES = 0;//清转换结果寄存器高8位
      ADC_RESL = 0;//清转换结果寄存器低8位
      ADC_CONTR = 0x80 | ADC_START | channel; //打开ADC电源,启动ADC转换,指定通道P0.3(32脚1011值
回复:
是最后一句最右边的channel赋值的,来自于函数参数传入。
具体可以查找寄存器手册的ADC_CONTR项,bit0~bit3为通道配置选项
链接:
channel在那里赋3的 - C语言,汇编语言,Proteus MCU软件仿真 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题2:
又加了配置      CMPCR1 |= 0x0c;   //选择比较器正端ADC,负端P36
就可以了,但是这个 CMPCR1 (适用于旧版比较器,新版比较器使用 CMPEXCFG 中的 CMPPS 进行选择)
      这个不是旧版比较器吗?
      这个新版本与旧版是在那个地方看的?
回复:
这个可以看技术手册,芯片型号部分介绍,里面有写使用的是新版比较器还是旧版比较器
链接:
8H1K比较器用不了 | 可以了,用ADCx 作比较器正极输入,ADC的电源要开,通道要设对 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题3:
STC的PWM出四路1MHz轻轻松松好吧
回复:
pwm的问题是没法同时四路频率可调,并且四路没法单纯使用硬件实现计数功能。
控制伺服控制器这种场景,占空比差不多就行,主要是脉冲的频率和数量可控。
亦或者有什么更高级的用法可以实现?愿闻其详
不过,如果单纯讨论输出频率,那还是pwm更高一些,通过内部的高速pll,轻松可以达到io翻转极限。
链接:
使用Ai8051U实现4路1MHz可控数量脉冲输出,工控领域 - 第2页 - 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题4:
按这个步骤设置Link1d全部正常到 第7步 时,
在keil中的debug选项中找不到stc swd 仿真器这个怎么解决?
注:烧录可以正常,设置仿真也正常
回复:
使用仿真选项卡中的添加到keil,然后关闭所有keil
重新运行keil,应该就有了
链接:
keil中debug选项中找不到stc swd 仿真器 - 仿真/编译器/汇编器/头文件 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题5:
王工已经可以转起来了,现在想请教一下您怎么改变转速?是否只能通过通讯来改变转速?
回复:
暂时只能通过通讯改变转速。
你想要怎么样控制呢?
链接:
高性能FOC | 32F12K54-FOC Lite V2 开源!经多天测试,稳定无异常==目前最高水平 - 第14页 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题6:
《基地址DBA与实际占空比寄存器对应关系表.jpg》在哪里可以得到?
为什么要写PWM1_CCR1H,不应该是PWM1_CCR1L吗?

PWMA_DMACR = 0x14; //保留字节是啥,size又是啥?
DMA_PWMA_ITV间隔时间有什么作用?
回复:
dma_pwma_itv是用来给dma过程中,每次改变pwm寄存器后的间隔时间,用来手动控制插入独立可调的延时,方便速度的适配。
链接:
有8051U关于PWMA-DMA的详细说明吗? - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题7:
屠龙刀、一箭双雕,等学习工具都用到了电子开关电路:

按照手册上附录推荐的保护电路是最简单了,而且还节约成本。
为何还要用这么复杂的开关电路呢?
回复:
没外壳保护的,邮寄过程当中的,压坏
运输损坏那个问题是讨论的是
比较高的自锁开关和普通的微动按键,
因为自锁开关比较高,容易磕坏了。
这个电路上,简单的和复杂的区别在于,
一个是自锁开关,一个是非自锁的,
用来断电的电子开关。
链接:
关于电子开关部分电路的讨论 | 3.3V系统,电子开关便宜,机械开关贵 - 电源/复位/省电模式/外部晶振/内部时钟/对外时钟输出/PLL-144MHz时钟 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题8:
假日期间,买了8H8K64U进行USB下载,
找出之前的小板临时改了改,感受USB下载程序,
1)遇到个问题,根据提示操作,可以显示HID1,
   每次下载完成,一会就返回去,
   第二次下载,需要重新按P3.2及断电键,正常吗?

2)内部EEPROM大小,正常设置多少?
3)看资料介绍8H8K64U分为A/B/C版本,
   在哪里可以看到是什么版本。

以上请教网友老师,解答一下,谢谢!
回复:
如果程序内没有写usb相关程序,每次都是要重新按p32进hid下载模式的
内部eeprom看你想要存储掉电保存数据的数量,不想存就设最小就行
版本一般是看丝印最后一位,或者有例程可以读到版本号
不过一般来说,从官方渠道现在能买到的都是最新版本了
=============================================
3,USB下载的 特殊提醒
在USB插上的情况下,
如果复位脚的功能已被设置成是复位脚而不是I/O,
则外部手动复位也可以进入 USB-HID 下载模式
链接:
USB下载问题 | 外部手动复位也可以进入 USB-HID 下载模式,不需要P3.2参与判断 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题9:
1)有没有方法,按一次P3.2,再按断电操作后,只要不拔出USB下载板子,就始终在HID这里。

2)8H8K64Uflash空间是64K,如果EEPROM设置成32K,程序空间就只有32K存储程序。
回复:
1,有的,具体参考论坛内的usb不断电下载例程
2,你的理解是正确的,eeprom会压缩代码空间。
不过有个例外,就是当eeprom设为全部空间后,代码空间就可以在运行过程中编辑了
链接:
USB下载问题 | 外部手动复位也可以进入 USB-HID 下载模式,不需要P3.2参与判断 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题10:
如图,这是小白我设计的电源采样电路,这个是AC380V输入ADC采集给51单片机的,我中间加啦2MM的空槽,这样安全么,会不会有什么问题

回复:
这里已经很安全了,主要是后端采样做好保护,防止击穿单片机就行
链接:
求大神们指点下,这个380V安全间距够么 - 其他技术交流 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题11:
printf打印全局变量没问题
但是我要打印局部变量,老是报错。打印不了 图1
如果我想打印这个中断里面的 变量n 。
回复:
改成全局变量,你这样没有变量传递手段,其他函数内是调用不到局部变量的
链接:
printf怎么打印 局部变量啊? - C语言,汇编语言,Proteus MCU软件仿真 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题12:
这是我移植后的效果和疑问:
1.脉冲和电机角度或者圈数对应关系;(我发现目标频率改了也会影响角度,因为我希望得到的效果,按下按键电机旋转90度)
2.我加了一个按键,但是发现按键按了之后会先卡顿几下然后在转,并且卡顿时电流很大,电机发烫;(如视频1,频率2400,脉冲数800)
3.去掉按键后,直接转很丝滑;(如视频2,频率2400,脉冲数800)
回复:
按键按下卡顿应该是你程序编写问题。
再按键按下后,没有判断抬起就继续执行了,所以导致脉冲发送的函数被重复执行,导致了不正确的脉冲发送。
链接:
请教下,这个8H系列MCU 中两项细分程序 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题13:
因为我这个需要达到的效果是,一直按下按键,电机持续旋转至90度,达到90度后,即使仍然按着按键,电机也不旋转了,但是途中只要释放按键,电机就要回零
回复:
那你要用标志位给转动和操作分开,不要对电机操作函数做多次重复调用
你现在这样子感觉不像有标志位做限制。
链接:
请教下,这个8H系列MCU 中两项细分程序 - 第2页 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题14:
您好,能麻烦您帮我看看嘛?我希望得到的是按下按键转一圈,转到一圈即使按着按键也不动了,松开按键,回到原点。但是现在实际情况是这样,按着按键转一圈后,不停下 还会缓慢转动,但是释放按键后,回到原点,不在转动,这是怎么回事呢。
回复:
请使用这部分代码替换你的按键扫描函数
<font size="4">if (slow_down == 0) // 当缓降按键被按下时
{
    slow_down_no_press_number = 0;   // 重置缓降按键未按下的计数器
    if (slow_down_press_number >= 4) // 如果缓降按键连续按下扫描次数达到4次
      flag_slow_down = 0;          // 设置标志位flag_slow_down为0
    else
      slow_down_press_number++; // 否则增加缓降按键按下的计数
}
else // 当缓降按键被松开时
{
    slow_down_press_number = 0;         // 重置缓降按键按下的计数器
    if (slow_down_no_press_number >= 4) // 如果缓降按键连续未按下扫描次数达到4次
      flag_slow_down = 1;             // 设置标志位flag_slow_down为1
    else
      slow_down_no_press_number++; // 否则增加缓降按键未按下的计数
}</font>
链接:
请教下,这个8H系列MCU 中两项细分程序 - 第2页 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题15:
您好,我替换了之后还是会有这个问题,到达角度后,还是会缓慢的转动?会不会是没有停止操作
回复:
那你就在结束的时候使用
PWMA_ENO = 0x00;
这句话强制停止PWM输出
链接:
请教下,这个8H系列MCU 中两项细分程序 - 第2页 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题16:
我在项目中加入了STC32G.h 文件但是用keil 编译的时候出现 "BRT" 寄存器未定义的错误 应该怎么解决?
回复:
因为独立波特率发生器并不是每个型号都有的,建议使用其他的波特率生成选项
链接:
Ai32G12K128 寄存器问题 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题17:
不理解wptr&=0xf为什么
回复:
因为0x0f为十进制15。
当wptr为15时,加一则变成16(0x10)。
此时通过wptr&=0x0f,则将高四位消去。
变成wptr=0x00。
从而实现0~15的不断循环
链接:
8g单片机中串口通讯wptr &= 0x0f; - C语言,汇编语言,Proteus MCU软件仿真 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题18:
我想请问在开漏输出的模式下,IO翻转速度是多少,芯片型号是8H1K08
回复:
频率输出有两个限制,极限值由系统电压决定,通常情况下,5V最大36Mhz,3.3V最大25Mhz。具体可以参考技术手册“电气特性”部分。
其次就是系统频率,硬件最快可以输出系统时钟的一分频,也就是最大系统时钟频率。具体请参考技术手册“时钟管理”部分
链接:
IO翻转速度8H1K08 - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题19:
数据是从第4032个数据之后开始变成RX缓冲区的,4032+64刚好是4096,不知道是不是有什么联系,也就是说,发出来的6000个数据,是4032(TX区)+64(RX区)+1904(TX区)一共6000个,我把优化啥的都关了,结果也是一样
然后我看了一下地址的分配,好像也没啥问题
回复:
stc32f的xdata区域只有4k大小。可能是超出的部分在访问的时候被截断了,所以就像是从头又开始了一样。
链接:
关于32F数组区域重叠的问题 | 已解决 - 仿真/编译器/汇编器/头文件 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题20:
sfr P2 = 0XA0;
main 函数里写P2=0X0;结果LED灯全亮。这是正常情况。
问题:
我不用这个头文件,想直接去操作0XA0这个寄存器地址来控制LED灯的亮灭,如下定义:
#define LED *((volatile unsigned char *)0XA0)

然后写 LED = 0X00;
结果没法控制LED,似乎这个寄存器内容设置没成功?还是什么其他原因?我不太理解为什么,请求各位大佬帮忙解答一下。非常感谢~
回复:
sfr是必须的,这部分属于特殊寄存器。
你想要使用LED=0x00进行控制的话
可以使用#define LED P2 这样子实现
链接:
51寄存器地址操作相关 - C语言,汇编语言,Proteus MCU软件仿真 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题21:
问下大家,STC8A8K64D4单片机,同时使用串口1、2、3,能不能都用定时器T2作为波特率发生器?
回复:
可以的,所有的串口都支持同时使用T2作为波特率发生器,不过同时使用T2的时候。
串口的波特率都必须一致。
例如:串口1、2、3都使用了115200bps的波特率
链接:
多个串口同时使用 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题22:
设计电路时忘了 UCap 接0.1uf电容了,
该脚悬空了,会有什么影响,请大佬们指点一下
回复:
是给USB部分使用的,如不用USB功能(USB通讯,USB下载),则可以不接。
UCAP 是内部USB模块的 3.3V-LDO 电源输出端
链接:
请问大佬,UCap引脚的功能是什么 | UCAP 是内部USB模块的 3.3V-LDO 电源输出端 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题23:
关于交流市电采样分压电阻的计算问题
回复:

链接:
关于交流市电采样分压电阻的计算问题 - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题24:
感觉这个电路不对,R1上面应该接5V吧?
回复:
这个是官方的电路图,adc-verf接的是431基准源(2.5v)
因此最大输入电压为0~2.5v
如果参考电压接的5v,才按照你说的这个接5v
链接:
关于交流市电采样分压电阻的计算问题 - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题25:
串口接收有问题,串口信息收到的都是0
回复:
首先请检查硬件链接,比如说有没有连错io
然后你这个串口配置有问题,你没有配置波特率的定时器,没有指定波特率,串口怎么会正常工作呢?
建议使用stcisp内的小程序,可以快速配置串口,保证两边串口波特率一致才能通讯
链接:
串口信息收到的都是0 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题26:
单片机按键接法主流有两种:图一简单,平时不耗电。图二接法按钮按下时IO直接接地,电流应该比较大,为什么还有很多人用图二呢?

哪一种接法比较科学呢?请大咖们指教!

回复:
图二那种,10k的电阻,按下时电流其实不大的,大约0.5ma这样子。
图一那种我也不是很清楚为啥要这么接

奥,这么说我想起来了,这个是防止io模式设置错误
因为io默认为1,如果不小心设置成推挽模式。则等效io为vcc。
此时按下按键将导致io电流过大烧毁。
加入电阻则可以进行限流,保护io
链接:
哪一个按键接法比较科学? - I/O读写及点灯,外部中断 ,所有I/O都支持的普通I/O中断,按键扫描 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题27:
用stc8g1k08a17a ,程序需要不断计算浮点, 不过运行几分钟后就死机
请教浮点运算应注意什么避免死机, 死机是什么原因引起,如果加载mdu16会不会更好点
回复:
检查确保没有除0错误
除0可能导致单片机重启或者卡死
链接:
请教stc浮点运算应注意什么避免死机 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题28:
如题,使用STM32之类的单片机都提供了读保护的功能,防止别人直接读取我们的程序,请问我们STC的单片机支持类似的功能吗?
回复:
所有的stc单片机都没法读出程序来
想要安全可以配合单片机加密,详情请搜索论坛内有关单片机加密的帖子
链接:
请问AI8H4K64TLCD系列单片机支持读保护的功能吗? - 其他技术交流 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题29:
8g1k08a 8pin pca高速脉冲 p54不输出
而且p32 p33都可以正常输出, 就p54不行回复:

链接:
8g1k08a 8pin pca高速脉冲 p54不输出 - 定时器/计内部时钟,计数器/计外部脉冲,时钟分频输出,软件延时 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题30:
手册写的是xdata可对16字节的变量进行访问,我移植旧程序用到的大量的32位变量,看watch窗口似乎没有影响,请问是否会有问题
回复:
手册写的是xdata可对16字节的变量进行访问,我移植旧程序用到的大量的32位变量,看watch窗口似乎没有影响,请问是否会有问题
链接:
Ai32G12K128的xdata对32位变量能否正常使用 - 老鸟反刍/吐槽,新手乐园,毕业设计 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题31:
请教大佬,那么原来用 8H1K17, 8H1K28 开发的
现在有 AI8H1K17, AI8H1K28 , 需要改程序吗,
回复:
不需要,目前就是 AI风格名字,都是一样的
链接:
8H1K17, 8H1K28, 规格,现在有 AI8H1K17, AI8H1K28 ? - 综合讨论 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题32:
王工加上电解电容还是这样,可能是我表述不明确。开机以后按下按键,电机会先很快速地转到某一个位置,然后再开始以额定转速转动
回复:
你说的这种情况可能是由于测试按键是直接更改启动标志位
绕过了can通讯的补偿逻辑
can通讯控制下没有这个问题。
按键控制毕竟只是测试,能转就行了
链接:
高性能FOC | 32F12K54-FOC Lite V2 开源!经多天测试,稳定无异常==目前最高水平 - 第15页 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题33:
8G1K08A的PWM可以只选择一个引脚使用吗,其他用于普通IO或者其他功能
手册上这个意思是一次设置,一下把四个引脚的功能都限定死了吗?
没办法只让一个IO使用PWM吗,其他IO作为其他用处比如ADC,或者普通的IO。回复:
可以像你所述这样使用的
只需设置不需要的pca模块对应的ccapmx为0即可
例如pca0不想输出pwm,想要作为其他功能使用,可以设置CCAPM0=0x00;
意思是pca0模块无操作,即不占用io其他功能
链接:
8G1K08A的PWM可以只选择一个引脚使用吗,其他用于普通IO或者其他功能 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题34:
好的王工谢谢,请问您有好一些的CAN通讯软件推荐吗
回复:
stcisp自己就带一个can通讯助手,配合对应的硬件就可以了
具体可以搜索论坛内的“can视频教学”关键词
链接:
高性能FOC | 32F12K54-FOC Lite V2 开源!经多天测试,稳定无异常==目前最高水平 - 第15页 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题35:
不懂就问,问个幼稚的问题,请问:两个带CAN的单片机(如STC32G12K128)可以直接进行CAN通讯吗?
回复:
如果你说的是通过1050这种CAN芯片转换电平后的话,肯定是可以的。
如果你说的是不经过电平转换芯片直接发送和接收,这个我就不大清楚了
链接:
请问两个带CAN的单片机可以直接进行CAN通讯吗 | 每个单片机都要外接 CAN 收发器 - CAN/Lin/CANOpen/已通过车规 AEC-Q100 Grade1(-40 ~ +125度) 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题36:
各位大佬焊接芯片都是用啥??
回复:
我是使用空气炸锅初步焊接+电烙铁和助焊剂进行后续修补
实用焊接工具分享-空气炸锅 - 其他技术交流 国芯技术交流网站 - AI32位8051交流社区 (stcaimcu.com)
链接:
各位大佬焊接芯片都是用啥?? - 其他技术交流 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题37:
32G12k128芯片中IIC通信直接使用内部上拉电阻能正常通信吗?
这种会不会影响通信质量呢?我这没有示波器,有没有大佬实测过呢?
回复:
电阻更小,会使得拉高电平的速度更快,也就可以支持更快的速率。
我用32g的iic试过内部上拉400K的速度,是没问题的。
链接:
IIC接口上拉电阻的问题 - QSPI/3组SPI/I2S/I2C,一线制温湿度传感器 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题38:
怎样尽量减少串口发送数据等待中断(完成)的时间?
回复:
初步怀疑是有其他中断打断串口标志位操作了,可以试一试把串口优先级调节到最高
单纯看你这个程序是看不出什么问题的,或许需要完整程序
链接:
怎样尽量减少串口发送数据等待中断(完成)的时间? - 串行口,DMA支持的4组串口,RS232,RS485,Modbus, CRC16 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题39:
早上好。。。向诸位大侠请教一下:我用的是Ai8H2K08U芯片,用的是这种仿真器
当插上仿真器后AIapp-ISP-v6.94S上显示的是 。在Debug设置为COM14或COM15时都连接不上,也就是不能“制作仿真芯片”,也不能下载代码,这是怎么回事?恳请 指教,致谢
回复:
可能是供电问题?你现在用的这个接口是没有供电能力的
链接:
请教Ai8H2K08U芯片的仿真 - 仿真/编译器/汇编器/头文件 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题40:
芯片为8H1K24.时钟11.059
按手册示例,做一个PWM输出。
现有ARR数值,P1.0输出为169Hz,50%脉宽,简单估算也算正常
问题是:
改变ARR数值,频率不变,脉宽变了。。。差哪呢?
回复:
这两个数值并非是独立调节的,是有关联的。
比如说:CCR的值不能超过ARR的值,想要50%占空比的情况下
ARR=100,CCR=50;
如果改变ARR,则
ARR = 50, CCR =25;
这样子才可以改变频率的同时改变占空比
链接:
8H1K24输出PWM问题 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题41:
那也就是说,只有ARR=FFFF的情况下,CRR才有16位调节范围,ARR=2,脉宽无法调整。
那我需要较高的频率输出,和等效16位的脉宽调整,要引用哪个示例程序?
回复:
频率高了以后,脉宽调整分辨率就是会下降的。
如果你想要50%占空比的高频率输出,可以试试定时器0的分频输出功能

如果想要保持完整的CCR分辨率,可以将ARR=FFFF,调整PWM输入时钟的频率。
不过输入PLL的频率要求将非常高,7KHz左右的输出就要求PLL产生500Mhz的输出了。
如果使用正常40Mhz的主频,则最高也就能达到610Hz的频率
链接:
8H1K24输出PWM问题 - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题42:
我是用烧录软件里的范例去捕获PWM,这里使用了PWM5 和PWM1P通道,两个通道都试过了。
问题:
1.通过串口将得到的计数点cnt的值打印出来,。但是通过串口打印出来的值占空比时间(高电平脉宽时间)和脉宽周期的比值并不等于我发出的PWM信号。
2.当发出的PWM信号占空比接近50%的时候,串口打印的两个值也对不上而且误差很大。
3.范例里的程序一个计数点“cnt”是多少时间这个怎么去计算?
回复:
SP的例程要说错也没有错,不过只能采集第一个占空比和周期,后面的就需要像梁工那样做一下运算了。
简单来说,PWM捕获就是一个用定时器一直跑,然后记捕获到来时候的定时器值。
拿最简单的周期捕获来讲,每次下降沿进行一次捕获,那么按顺序捕获出来的值就像这样:
10,20,30,40,50
通过上一次减这一次,就可以得到周期为10。如果再捕获上升沿,自然就可以算出高电平和低电平时间,进而得到PWM的占空比

链接:
关于STC8H8K64U 的PWM输入捕获 求助 求助!!! - BLDC/144MHz-PWM-硬件移相/45路PWM+3路CCP/7组不同周期的PWM/DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题43:
在CAN的接受函数中未对ID进行解析,那么过滤器还能过滤不希望接受ID的数据吗?谢谢
回复:
过滤器是硬件级别的匹配过滤。
过滤器给过滤掉的信号,接收函数这边就直接没有哩,根本到不了处理这一步
你可以设置不感兴趣的id让他通过不了过滤器,这样就不会收到了。
链接:
请教大家,关于CAN滤波器的设置 - CAN/Lin/CANOpen/已通过车规 AEC-Q100 Grade1(-40 ~ +125度) 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题44:
这个adc通道选择时间控制是什么作用?不理解!
需要准确度高是不是就设定为2?回复:
需要精度高就把采样时间开满。
adc的本质就是给里面的采样保持电容充电,充电时间越长,精度就越高
链接:
这个adc通道选择时间控制是什么作用?不理解! - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题45:
485和烧录口公用TXD和RXD,当485设置为接收状态时候,就无法烧录程序了,有什么好办法解决(不改板子最好)
回复:
给到485的txd和rxd串个电阻,下载的时候从电阻靠近单片机的一侧下载。
这样电平变化的时候,优先服从下载侧的电平信号,而撤掉下载器后,不会对正常485通讯造成影响
链接:
TXD和RXD烧录口冲突问题请教 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题46:
请教一下,我做透传的话,stc单片机里面是不是也得有程序配合?还是说一个空白芯片也行?
回复:
如果你的透传速度足够的话,是可以空白芯片下载的。 比如上面通过蓝牙实现的无线下载,就是可以不用更改程序就能下载。 如果你的透传实时性不大好,就只能在单片机内部进行程序配合了
链接:
请问透传下载该使用那种方式? - 第5页 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题47:
再就请教下大神,透传这种我的认知和实际串口应该一样的啊,同样的操作实际串口可以,但是透传就不行,应该如何排查?
回复:
透传和串口并不一样,透传是分包传输,而串口是实时传输,所以透传是有延迟的
例如按照时间,这么一串数据(空格代表间隔时间)
原始数据:   01   02    03    04    05
串口传输:   01   02    03    04    05
透传数据:               0102         0304       05
链接:
请问透传下载该使用那种方式? - 第6页 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题48:
寄存器如何用sfr引用,代表什么,我不太理解
回复:
可以直接使用对应型号单片机的头文件,比如说stc8H就使用#include"STC8H.H" 进行引用
然后直接记P0M0这种就行了,sfr定义的地址是芯片制造中定义的地址,基本不需要记忆
链接:
新手有问题求解答 - C语言,汇编语言,Proteus MCU软件仿真 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/
问题49:
现在使用一块STC8H1K,芯片实验AD转换一路输入的时候可以,但增加一路,我想使用中断中改变引脚输入,无法实现,请高手指教,我的中断程序如下看看是什么原因:
回复:
你切换adc使用的是ADC_CONTR |= 0x41;操作
这样是不对的。因为这样会造成0x40无法覆盖0x41.
所以应该在每个“//继续ad转换的语句前面”,加入一句
ADC_CONTR &= ~0x0f;
用以清除通道选择,这样就可以了
链接:
关于多路AD转换问题 - ADC/比较器,DMA支持的12位ADC,轨到轨比较器,DAC 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/

问题50:
试了一下,还真可以通过发送命令直接下载,但如果有一个新的程序下载进去,都必须把这段代码加上啊,有没有什么别的办法
回复:
不断电下载都是必须要内置程序的,并且内置程序如果因为其他的循环死机情况下,是没法继续不断电下载的。
所以,解决方法就是自动断电下载,外部硬件控制自动断电,也算是一种自动下载。
不过就不算“不断电下载”了
我这里有个无线版本的自动下载,可以不用对单片机程序做更改:
全自动蓝牙下载器!使用STC8H2K08U和JDY33模块制作, 可通讯可下载 - 第2页 - 有ICache的AI32F12K54测试版块,FOC 国芯技术交流网站 - AI32位8051交流社区
链接:
不断电下载疑问 - ISP下载/做自己的ISP 国芯技术交流网站 - AI32位8051交流社区
/****************************分割线****************************/


lzzasd 发表于 2025-4-18 22:25:28

打卡标记    佩服楼主的基础很牢啊
页: [1]
查看完整版本: 荣誉版主 山东.王,2024/10 技术漫步,共享,技术回复 索引