搜索
bottom↓
回复: 14

Kinetis系列选型:替换PIC+ADS7822(已解决)

[复制链接]

出0入0汤圆

发表于 2014-5-15 18:36:30 | 显示全部楼层 |阅读模式
本帖最后由 FSL_TICS_ZJJ 于 2014-6-4 13:25 编辑

老产品用的PIC18,使用了2个ADC通道,另外还挂了片ADS7822专门伺候一个敏感变量。
现在有一路脉冲计数输入,一路PWM输出,一路DA(旧版用10bit PWM做),要点9个光耦(最多同时点3个,其中5个要求15mA)
新产品MCU控制板重做,打算用KE02,不知道用20MHz的还是40MHz的?
淘宝/易络盟都只有20MHz的旧版芯片(MKE02Z64xxx2,易络盟上海仓还没货),没40M的……
项目成本不敏感,但是工期紧,还剩十几天,除了KE02还有更适用的吗?

看了下PIC的代码,很纠结ADC这部分,摸不清老产品(前人做的)怎么想的,为什么挂片7822而不用片内的多路ADC。。。

  1. void Fnv_AD(void) // 在主循环内调用
  2. {
  3.     static uint8 step = 0;
  4.     uint8 i;

  5.     if (!gib_ad) return; // gib_ad会被某中断函数改为1
  6.     gib_ad = 0;
  7.     switch(step) {
  8.     case 0:
  9.         for (i=0; i<8; i++) {
  10.             ADIF = 0;
  11.             GODONE = 1;
  12.             while(!ADIF);
  13.             get_addata(i);
  14.         }
  15.         adsort(); // 升序
  16.         if (CHS0) {
  17.             ADpress_datadeal();
  18.             CHS0 = 0;
  19.             step++;
  20.         } else {
  21.             ADpower_datadeal();
  22.             CHS0 = 1;
  23.         }
  24.         break;

  25.     case 1:
  26.         for (i=0; i<8; i++) {
  27.             gi16_ad7822data[i] = Getad7822();
  28.         }
  29.         data7822sort(); // 升序
  30.         AD7822avera();
  31.         step = 0;
  32.         break;

  33.     default:
  34.         step = 0;
  35.         break;
  36.     }
  37. }
复制代码

出0入0汤圆

发表于 2014-5-16 08:56:34 | 显示全部楼层
脉冲频率高不?

出0入0汤圆

 楼主| 发表于 2014-5-16 09:01:11 | 显示全部楼层

脉冲将近30kHz

出0入0汤圆

发表于 2014-5-16 09:06:42 | 显示全部楼层

30K不好弄啊,飞思卡尔的芯片没有计数器功能!

出0入0汤圆

 楼主| 发表于 2014-5-16 09:07:53 | 显示全部楼层
wangpengcheng 发表于 2014-5-16 09:06
30K不好弄啊,飞思卡尔的芯片没有计数器功能!

这么坑爹啊,难道换NXP?

出0入0汤圆

发表于 2014-5-16 09:09:28 | 显示全部楼层
cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?

可以选MKE06Z64VQH2,呵呵,用外部中断去做!

出0入0汤圆

发表于 2014-5-16 09:11:41 | 显示全部楼层
wangpengcheng 发表于 2014-5-16 09:09
可以选MKE06Z64VQH2,呵呵,用外部中断去做!

30K,3.3US一次,20M的主频,50NS一个时钟周期,60个时钟周期内完成中断,其实还是可以的,但是就是做别时间太紧了!用48M的基本差不多!

出0入0汤圆

发表于 2014-5-16 09:19:47 | 显示全部楼层
cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?

怎么可能没有计数功能???
肯定有.

出0入0汤圆

发表于 2014-5-16 09:33:55 | 显示全部楼层
error_dan 发表于 2014-5-16 09:19
怎么可能没有计数功能???
肯定有.
• Timers
– One 6-channel FlexTimer/PWM (FTM)
– Two 2-channel FlexTimer/PWM (FTM)
– One 2-channel periodic interrupt timer (PIT)
– One real-time clock (RTC)

没看到有计数功能啊!

出0入0汤圆

发表于 2014-5-16 09:38:55 | 显示全部楼层
wangpengcheng 发表于 2014-5-16 09:33
没看到有计数功能啊!

FTM带外部时钟脚,这就是计数.
而且如果LZ的需求是测频率的话,带输入捕获的FTM更方便.
这都是单片机最基本的功能啊,51都有的东西.

出0入0汤圆

发表于 2014-5-16 09:48:28 | 显示全部楼层
error_dan 发表于 2014-5-16 09:38
FTM带外部时钟脚,这就是计数.
而且如果LZ的需求是测频率的话,带输入捕获的FTM更方便.
这都是单片机最基本 ...

看到了,PTE0与PTA5的确是外部时钟脚,受教了:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-5-16 09:49:06 | 显示全部楼层
楼主可以试一下error_dan 说的方法!

出0入0汤圆

 楼主| 发表于 2014-5-16 09:52:13 | 显示全部楼层
wangpengcheng 发表于 2014-5-16 09:49
楼主可以试一下error_dan 说的方法!

刚问同事了,K/L/E都有这个模块~
to error_dan:
我都忘了输入捕获了,复习一下~

出0入0汤圆

发表于 2014-5-16 10:00:33 | 显示全部楼层
cmheia 发表于 2014-5-16 09:52
刚问同事了,K/L/E都有这个模块~
to error_dan:
我都忘了输入捕获了,复习一下~ ...

30K的频率直接输入捕获用中断做的话,每个脉冲都采集压力还是比较大的,不划算.
频率采集还要看采样率的,采样率不高的话,开一个定时器free run,然后目标信号直接用外部时钟输入,分频以后给计数器计数,然后随便用一个比较器写入一个比较值,达到这个比较值进中断读free run计数器的值,就可以获得(比较值*分频系数)这么多个脉冲所用的时间,频率自然出来了.
当然,你的项目成本不敏感的话,不如直接换带DMA的型号,搬数据的工作让DMA去做,CPU直接处理DMA码到内存里面的捕获值,效果更好.

出0入0汤圆

发表于 2014-5-19 13:33:42 | 显示全部楼层
楼主如果现在只是想少量尝试KE02 40M芯片的话,可以去申请样品:http://www.freescale.com/webapp/ ... mp;fromSearch=false
如果较多芯片,可以找代理购买。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 11:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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