cmheia 发表于 2014-5-15 18:36:30

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

本帖最后由 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。。。

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

    if (!gib_ad) return; // gib_ad会被某中断函数改为1
    gib_ad = 0;
    switch(step) {
    case 0:
      for (i=0; i<8; i++) {
            ADIF = 0;
            GODONE = 1;
            while(!ADIF);
            get_addata(i);
      }
      adsort(); // 升序
      if (CHS0) {
            ADpress_datadeal();
            CHS0 = 0;
            step++;
      } else {
            ADpower_datadeal();
            CHS0 = 1;
      }
      break;

    case 1:
      for (i=0; i<8; i++) {
            gi16_ad7822data = Getad7822();
      }
      data7822sort(); // 升序
      AD7822avera();
      step = 0;
      break;

    default:
      step = 0;
      break;
    }
}

wangpengcheng 发表于 2014-5-16 08:56:34

脉冲频率高不?

cmheia 发表于 2014-5-16 09:01:11

wangpengcheng 发表于 2014-5-16 08:56
脉冲频率高不?

脉冲将近30kHz

wangpengcheng 发表于 2014-5-16 09:06:42

cmheia 发表于 2014-5-16 09:01
脉冲将近30kHz

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

cmheia 发表于 2014-5-16 09:07:53

wangpengcheng 发表于 2014-5-16 09:06
30K不好弄啊,飞思卡尔的芯片没有计数器功能!

{:shocked:} 这么坑爹啊,难道换NXP?

wangpengcheng 发表于 2014-5-16 09:09:28

cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?

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

wangpengcheng 发表于 2014-5-16 09:11:41

wangpengcheng 发表于 2014-5-16 09:09
可以选MKE06Z64VQH2,呵呵,用外部中断去做!

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

error_dan 发表于 2014-5-16 09:19:47

cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?

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

wangpengcheng 发表于 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)
没看到有计数功能啊!

error_dan 发表于 2014-5-16 09:38:55

wangpengcheng 发表于 2014-5-16 09:33
没看到有计数功能啊!

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

wangpengcheng 发表于 2014-5-16 09:48:28

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

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

wangpengcheng 发表于 2014-5-16 09:49:06

楼主可以试一下error_dan 说的方法!

cmheia 发表于 2014-5-16 09:52:13

wangpengcheng 发表于 2014-5-16 09:49
楼主可以试一下error_dan 说的方法!

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

error_dan 发表于 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码到内存里面的捕获值,效果更好.

FSL_TICS_ZJJ 发表于 2014-5-19 13:33:42

楼主如果现在只是想少量尝试KE02 40M芯片的话,可以去申请样品:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KE02_40&tab=Buy_Parametric_Tab&fromSearch=false
如果较多芯片,可以找代理购买。
页: [1]
查看完整版本: Kinetis系列选型:替换PIC+ADS7822(已解决)