发 帖  
原厂入驻New
[讨论] 【高手问答】从事MCU方案开发18年工程师,与你讨论方案设计(抢楼送开发板)
2019-12-4 14:10:48  41687 MCU ARM 单片机 电机驱动
分享
编者导读:
本期我们邀请了单片机/MCU版主满工@阿宝jf  ,来解答大家在单片机/MCU设计上遇到的问题,活动时间是12月4日—12月30日。

高手简 介:
满工,开发近18年,从事MCU方案开发多年,主要在家电方案,风机、水泵等电机驱动等方面,熟悉嵌入式方案开发,熟悉电机原理及其控制方法,对电机驱动,工业控制与智能家居等方面的开发及应用方案都有丰富的从业经验。

从事MCU单片机方案的开发多年,包括51核ARM核,各种应用:
1. 通信基站环境控制箱控制板;
2. 智能MP3播放器方案开发;
3. 智能点菜系统手持机方案开发;
4. 智能升降床方案开发,包括电机驱动;
5. 参与多个电机驱动方案开发;
      
若有相关MCU设计问题,你都可以在本帖下面,跟帖+并
@阿宝jf  
说不定你的问题在下个楼层或是下一页的楼层会有一个指引方向给你,或者是问题被解决了。
Elecfans高手问答,根据主题回帖提问,解答你的疑惑。
—————————————————————————————————————

问答奖励规则:
1、在论坛帖子中回帖,参与互动(要有价值的提问,刷评论除外),将获得5个积分;
2、关注并转发分享本帖到朋友圈,截图发布在评论下方,将获得电子发烧友社群VIP入群资格
3、在帖子中回贴参与提问,按楼层将获得SWM181RCT6-50开发板(提供五个,图示如下)
SWM181RCT6-50开发资料介绍.txt (1.08 KB, 下载次数: 59)
楼层奖励开发板规则.txt (93 Bytes, 下载次数: 8)
SWM181RCT6-50.jpg
—————————————————————————————————————
社区高手招募
不限专业领域、不限技术方向,只要你是一个有活力并乐于分享的开发者,只要你愿意把自己的经验收获分享给大家,帮助众多从业者共同学习、共同进步,我们就欢迎你来做客社区高手问答。
联系方式:liuyong@elecfans.com
快来联系编者吧!
———————————————————————————————————————

往期回顾


9

本帖被以下淘专辑推荐:

2019-12-4 14:10:48   2 评论 分享淘帖1
2 条评论
57 个讨论
支持一下,满工
2019-12-4 14:47:56 1 评论

举报

1 条评论
@阿宝jf 欢迎满工
1 条评论
这个220v-60v的电动车充电器,后级有个16脚芯片末字了,大概是哪些芯片可能啊,前端用的是UC3843的芯片起震的,我是想破脑袋瓜子了,这个16脚的芯片
image.jpg
2019-12-4 16:02:07 4 评论

举报

4 条评论
满工您好,我有个项目,负载是交流12V同步电机,而整机是直流12V供电,所以需要将直流转为交流给同步电机供电,我打算用H桥类似的方案,通过给电机两端的电压不停的切换正负方向来实现。我有个疑问,如果按这样操作的话,这样电机端实际上是方波,而正常的交流电是正玄波,这样的方波控制对交流电机性能是否有影响?影不影响电机的正常工作?您是电机驱动方面的专家,请帮忙解答,多谢!!!
2019-12-4 16:28:33 4 评论

举报

4 条评论
  • 阿宝jf 2019-12-4 18:00

    交流12V同步电机?我头一回听说,应该是三相12V同步永磁电机吧,这样的话,就需要3个半桥组成驱动电路,采用FOC或方波驱动方式,很简单的就实现驱动了

    aj8889 回复 阿宝jf: 2019-12-5 08:32

    电机确实是交流的,铭牌上写的是爪极式永磁同步电动机,电机两根线。我的意思是我用这种方波驱动的话,会不会对电机有影响,毕竟真正的交流电是正玄波驱动。

    阿宝jf 回复 aj8889: 2019-12-5 21:40

    那我明白了,是罩极式永磁电机,用你说的方波时没有问题的,对电机影响不大,但是可能对外干扰比较大而已;而且可能在低速时,电机的噪声比较大;

    aj8889 回复 阿宝jf: 2019-12-6 09:04

    感谢大神的耐心解答!!!

我买了一块51单片机的开发板,它上面有各种模块,都是已经可以开发使用了。现在我想另外买一个芯片,但是我看了看芯片的引脚,发现开发板上的VCC引脚已经用跳冒连接起来了,我自己的芯片就没有地方可以接了,另外就是新的芯片要接一个电阻,这个也是没有办法的。现在我想问:有没有这样的开发板,就是只有电源和51芯片,以及晶振接口,或者还有些LED等?

2019-12-4 16:38:00 3 评论

举报

3 条评论
满工@阿宝jf ,升压模块接入超声波模块后断路是什么原因?如何解决?相关图我也上传下
2.png 1.png 3.png
2019-12-4 16:40:39 1 评论

举报

1 条评论
我用STM32制作平衡小车,然后想用红外线遥控器来控制。但是一用到接受红外线外部中断时候,平衡小车控制平衡的中断就会被延迟导致小车没有那么灵敏了(就是很难平衡),请问下有什么办法吗?
1 条评论
  • 阿宝jf 2019-12-4 18:11

    接收红外线的外部中断程序,应当采取必要措施,保证每次运行的时间最短,不要试图在一次中断接收完遥控码,你可以每次仅接收1bit,保存在全局变量里面,接收完后,触发成功接收的事件

你好!
触摸屏可以和单片机通讯连接吗?
2019-12-4 17:48:57 1 评论

举报

1 条评论
请问STM32L4系列芯片上电运行后为什么所有的全局变量、地址变量的数据全都变成了最大值(0xffff)?

具体情形:

程序运行后,全局变量不可控,debug仿真发现寄存器内存储的值全部变为FF。定时器工作正常,板子上的工作指示灯能正常闪烁,通过MOSFET驱动的LED模块也能正常闪烁。但是因为全局变量出问题,导致部分功能不正常。

程序有一年的工程实践,一直用的没问题。硬件的PCB和器件也是按照之前的PCB和boom采购焊接的,只是旧的板子用起来完全没问题,新的板子就出现了上面的问题。下面附上最小系统的电路图,希望给点意见。




1.png
我估计是因为EPROM存储芯片的初始值导致的,因为第一批货里面寄存器所有值都是00,这一批初值都是FF,导致上电读取的值不正常。



2019-12-4 18:09:51 2 评论

举报

2 条评论
  • 阿宝jf 2019-12-4 18:22

    这款是M4内核的32位MCU,一般情况下,ARM核MCU的编译工具,可以设定程序加载时,全局变量的初始值的,默认情况下,是00的,如果工程特意指定,可以是ff。你这个情况,可能要核实一下工程的配置

  • 阿宝jf 2019-12-4 18:26

    可能我写的也不一定正确,是否是,程序启动时从Flash内部读取了部分数据然后赋值给到RAM?而Flash内部数据并未初始化,或是烧写程序时,没有把常用数据表的数据烧写到指定空间

请问满工,串口通信发送回来的数据多了该怎么办?
  1. 下面这个代码进行串口通信,
  2. 我一直发送的都是数据0x01。
  3. 每次单片机发回的值都应该是 (序号 01)。
  4. 但是到第十次发送的时候,发送的是(0D 0A 01)呢?
  5. //1.以2400bps从计算机发送任一字节数据,
  6. //当单片机收到该数据后,
  7. //在此数据前加上一序号然后连同此数据一起发送至计算机,
  8. //当序号超过255时归零。
  9. #include<reg52.h>
  10. #include<stdio.h>
  11. #define uchar unsigned char
  12. #define uint unsigned int
  13. uchar a,flat,num;
  14. void init()
  15. {
  16.         TMOD=0X20;
  17.         TH1=0xf4;  //2400波特率对应定时器1初值
  18.         TL1=0xf4;        
  19.         TR1=1;
  20.         SM0=0;
  21.         SM1=1;
  22.         REN=1;
  23.         EA=1;
  24.         ES=1;
  25. }
  26. void main()
  27. {
  28.         init();
  29.         while(1)
  30.         {
  31.                 IF(flat==1)
  32.                 {
  33.                         flat=0;
  34.                         ti=1;
  35.                         num++;
  36.                         printf("%c",num);
  37.                         while(!TI);
  38.                         TI=0;
  39.                         TI=1;
  40.                         printf("%c",a);
  41.                         while(!TI);                        
  42.                         TI=0;
  43.                         ES=1;
  44.                 }
  45.         }
  46. }
  47. void ser() interrupt 4
  48. {
  49.         ES=0;               
  50.         RI=0;         
  51.         a=SBUF;                 
  52.         flat=1;
  53. }
复制代码
1.png
2019-12-4 18:43:19 2 评论

举报

2 条评论
  • 阿宝jf 2019-12-4 22:24

    跟printf()的实现有关,库里面,可能自动的把0x0a翻译成0x0d 0x0a两个字符了;这是windows格式的回车换行符。想避免这个问题,可以避免使用printf()函数,直接用SBUF=num,就可以了;

  • 阿宝jf 2019-12-4 22:27

    后面一句,也用SBUF=a来代替就可以了

希望高手能介绍几款最为简洁的mcu
2019-12-4 22:11:57 4 评论

举报

4 条评论
  • 阿宝jf 2019-12-4 22:33

    简洁的MCU,其实是需要跟具体应用场景来判断的,有些时候简洁了,功能不够用;目前来说,需要触摸的简单控制,合泰最合适,有段码显示的简单功能华芯微特SWM181就好

    王栋春 回复 阿宝jf: 2019-12-4 22:36

    满工对语音存储芯片了解吗  最近项目需要用到  还望专门开贴讲解一下  谢谢

    阿宝jf 回复 王栋春: 2019-12-5 20:31

    语音存储芯片不是很了解,知道一些,还是把开讲机会留给高手吧

    王栋春 回复 阿宝jf: 2019-12-5 21:44

    就你所知的语音存储芯片 还望满工能推荐一下 谢谢

@阿宝jf 欢迎满工指导!
2019-12-4 22:31:34 评论

举报

单片机请教两个问题
1.单片机外接晶振起振的条件除了需要起振电容,还需要哪些条件?是否还需要程序呢?
2.单片机的高阻状态电平也是0,低电平也是0,这两个状态外部如何识别呢?

2019-12-5 10:26:03 1 评论

举报

1 条评论
  • 阿宝jf 2019-12-5 20:37

    1、起振跟程序还真没关系,一般跟电容,Vdd电压的大小有关;
    2、高阻状态电平并非零,只是说,你读取外设端口时得到0而已,这个状态其实对单片机本身来说,是无法区别的,如果单纯pin脚,应该很难判断,或者加个电容,然后判断其电压的变化来确定,我用这个办法做过模拟触摸;

请教满工SDIO读取SD卡碰到的一些问题,最近在学习STM32内部的SDIO接口来读写SD卡, 卡用的是大容量16GB的HCSD卡, 主控为STM32F103RC;采用官方的SDIO读写例程为基础进行测试修改, 现在已经可以把卡识别并将卡带入到数据传输状态(Transfer Mode);
碰到的问题:
①在卡已经进入到Transfer State状态的情况下, 依照SD卡的技术说明, 想通过发送CMD7(携带卡的RCA地址) 让卡返回到StandBy状态; 但是发送CMD7卡却无响应, 用示波器查看CMD线上确实无响应; 但此时发送CMD13(携带同样的RCA地址为参数) 却能得到卡的R1响应, 响应的数据为CSR寄存器内容: 0x0000 0900;
想问下为何卡已在Transfer State 状态下发CMD7命令却无响应;

②在卡初始化过程中, 每次初始化过程得到卡的RCA地址都为43690 (Hex: 0xAAAA); 想问下此RCA地址对于一个SD卡来说是固定的吗? 即是否每次初始化过程中发送CMD3 都会得相同的RCA地址;?

③像CMD7等响应为R1b的命令,它的响应和R1响应有何不同呢, 网上搜索是R1b说有一个忙碌状态位要检测, 想问下这个忙碌状态位是存在于什么地方, 具体做怎样的检测;

麻烦大佬了,望解答
2019-12-5 10:48:45 2 评论

举报

2 条评论
  • 阿宝jf 2019-12-5 20:52

    本人写过模拟SPI方式读写SD卡的程序,其实你说的CMD7无相应,应该是你没有选中该卡并且把其他全部不选中,如果你只有一张卡,那就先选中该卡(CM3命令),再发CMD7命令;

  • 阿宝jf 2019-12-5 20:57

    2、RCA地址是固定的,初始化时需要识别并保存该RCA,并在后续访问时使用;

想问下满工这个电路有什么用 在某个项目中看到的
1.png
我仿真了一下结果如图
2.png
3.png
结果就是把正弦波转成4V脉冲波,我看很多电路也有同样的用途,这个电路不同之处在哪呢
2019-12-5 10:53:46 1 评论

举报

1 条评论
  • 阿宝jf 2019-12-5 21:15

    实际上相当于一个滞回式信号滤波整形电路;其用途是把干扰比较多的信号中提起出有用的方波信号,这个电路抗干扰性很强

高手问答.jpg
这是同事画的原理图,外接25MHz的有源晶振。 一般使用无源晶振时OSCI、OSCO分别和晶振引脚相连。我在cubeMX上配置时,只要使能外部高速晶振这两个引脚都会被占用,无法配置成普通IO口,后来我在代码里IO口初始化时直接将OSCO配置成普通IO口,可是时钟就不对了,达不到72MHz,貌似外部晶振没有启振。
所以问一下,使用外部有源晶振时,能否只使用一个时钟引脚OSCI?
2019-12-5 10:54:15 1 评论

举报

1 条评论
  • 阿宝jf 2019-12-5 21:23

    应该是不能的,不只你这个,很多芯片,如果使用外部有源晶振,OSCO一般都悬空的,高阻态

请问C51中关于4X4矩阵键盘的问题?


我把P0口接在矩阵键盘上的,当我按下矩阵键盘中的某个按钮时,我去检测
发现都是0xff,我感到很奇怪。矩阵键盘中的任一一个按钮的两端都与P0口
中的某两条线相连,当按下时,这两条线就会变成低电平,可是我去检测时
怎么会没有变化呢?
   while(1)
   {   
      IF(P0 != 0xff)
      {
         //显示1;
      }
      else
      {
           //显示2;   
      }
   }

这个例子中都是显示2,请问这是为什么?

2019-12-5 16:42:42 2 评论

举报

2 条评论
  • 阿宝jf 2019-12-5 21:28

    你没发图出来,不好判断;如果你的键盘没有排阻下拉,那需要把行或列配置为输入下拉,然后,把相应pin置0后,读取,要扫描方式操作读取的。

  • liuyongwangzi 2020-1-2 10:32

    恭喜18层用户,请提供相关信息给我,邮寄相关礼品

@阿宝jf 满工,请问如何让 步进电机 按这样的一条曲线进行周期性转动呢?

我目前的想法是对 曲线方程求导,得出速度方程,然后在看看 速度 和 频率之间的对应关系,看能否指点指点,感激不尽

1.png
2019-12-5 16:46:00 1 评论

举报

1 条评论
  • 阿宝jf 2019-12-5 21:33

    步进电机,需按照确定顺序的步数去驱动,自然就按照这个曲线转动了。速度都是你给定的,我不是很get到你的问题点

开发环境:CS+ for CA,CX V4.02.00
问题:
1.怎么将常量数组定义到Flash中?
2.怎么将Flash中的常量数组拷贝到Ram中?
2019-12-6 11:35:06 1 评论

举报

1 条评论
  • 阿宝jf 2019-12-6 21:19

    你这个是瑞萨平台,其实定义常数到Flash,跟其他平台一样的,用const就可以了,比如:
    const unsigned char ArrayStr[8]={'H','e','l','l','o','!',0,0};
    而如果想要拷到Ram,那就直接取数组ArrayStr[n]赋值到内部Ram即可,比如:
    unsigned char TempA;
    TempA=ArrayStr[0];

撰写讨论

你正在撰写讨论

如果你是对讨论或其他讨论精选点评或询问,请使用“评论”功能。

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
123下一页
发讨论
关闭

站长推荐 上一条 /7 下一条

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