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
脉冲频率高不?
脉冲将近30kHz cmheia 发表于 2014-5-16 09:01
脉冲将近30kHz
30K不好弄啊,飞思卡尔的芯片没有计数器功能! wangpengcheng 发表于 2014-5-16 09:06
30K不好弄啊,飞思卡尔的芯片没有计数器功能!
{:shocked:} 这么坑爹啊,难道换NXP? cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?
可以选MKE06Z64VQH2,呵呵,用外部中断去做! wangpengcheng 发表于 2014-5-16 09:09
可以选MKE06Z64VQH2,呵呵,用外部中断去做!
30K,3.3US一次,20M的主频,50NS一个时钟周期,60个时钟周期内完成中断,其实还是可以的,但是就是做别时间太紧了!用48M的基本差不多! cmheia 发表于 2014-5-16 09:07
这么坑爹啊,难道换NXP?
怎么可能没有计数功能???
肯定有. 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)
没看到有计数功能啊! wangpengcheng 发表于 2014-5-16 09:33
没看到有计数功能啊!
FTM带外部时钟脚,这就是计数.
而且如果LZ的需求是测频率的话,带输入捕获的FTM更方便.
这都是单片机最基本的功能啊,51都有的东西. error_dan 发表于 2014-5-16 09:38
FTM带外部时钟脚,这就是计数.
而且如果LZ的需求是测频率的话,带输入捕获的FTM更方便.
这都是单片机最基本 ...
看到了,PTE0与PTA5的确是外部时钟脚,受教了:
楼主可以试一下error_dan 说的方法! wangpengcheng 发表于 2014-5-16 09:49
楼主可以试一下error_dan 说的方法!
{:lol:} 刚问同事了,K/L/E都有这个模块~
to error_dan:
我都忘了输入捕获了,复习一下~ cmheia 发表于 2014-5-16 09:52
刚问同事了,K/L/E都有这个模块~
to error_dan:
我都忘了输入捕获了,复习一下~ ...
30K的频率直接输入捕获用中断做的话,每个脉冲都采集压力还是比较大的,不划算.
频率采集还要看采样率的,采样率不高的话,开一个定时器free run,然后目标信号直接用外部时钟输入,分频以后给计数器计数,然后随便用一个比较器写入一个比较值,达到这个比较值进中断读free run计数器的值,就可以获得(比较值*分频系数)这么多个脉冲所用的时间,频率自然出来了.
当然,你的项目成本不敏感的话,不如直接换带DMA的型号,搬数据的工作让DMA去做,CPU直接处理DMA码到内存里面的捕获值,效果更好. 楼主如果现在只是想少量尝试KE02 40M芯片的话,可以去申请样品:http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=KE02_40&tab=Buy_Parametric_Tab&fromSearch=false
如果较多芯片,可以找代理购买。
页:
[1]