用户名: 密码: 免费注册 免费试用 简体中文 | ENGLISH
中国·芯片交易在线  
www.ic112.com
IC72论坛
广告服务
网页制作
用户帮助
首页 供应信息 求购信息 库存查询 新闻中心 展会资讯 IC厂商 技术资料 自由区域
当前位置:首页>> 技术资料 >> 正文
基于SOPC的简易运动控制芯片方案
时间:2006/7/14 8:58:00  作者:  来源:ic72  浏览人数:1222
 
 

      现在的运动控制器已经发展到了以专用芯片(ASIC)或FPGA作为核心处理部件的开放式运动控制器。这样的解决方案突出的特点,是让运动控制的处理部分以独立的、硬件性方式展开,增加系统的性能和可靠性,从而有效地解决了以单纯的MCU或DSP系统的处理带宽限制,以及用户系统软件和运动控制软件混杂性的问题。

      业界也早已出现了各种类型的运动控制专用芯片,虽然有较高的功能、性能,但一般都比较复杂,使得客 户应用起来非常困难。

      用户们常常需要一种容易使用的运动控制芯片与通用MCU/CPU结合起来的系统方案,用以面向更一般性的或中低端的应用场合。这样的方案里,运动控制芯片部分可以担当关键的马达控制信号发生功能,又可以拥有较高的性能和其他的系统性接口资源(若是利用8253/8254之类的计数器,就显得捉襟见肘,计数长度太短,且没有其他资源);而在MCU/CPU部分可以通过一些简单的控制指令完成对马达运动的控制,更多的资源用来处理系统界面或应用软件。

      简单而言,就是需要一个方案有效地协调了运动控制系统的软硬件的分工,软件部分方便客户开发,硬件部分确保系统性能。

      深圳市斯迈迪科技发展有限公司(Smarteer)推出的SM1000系列SOPC运动控制芯片就是上述需求的解决方案。它是在高性能系列运动控制FPGA/芯片—SM5000方案后,经过不断的技术积累和市场调查后,特地为中低端市场应用推出的。

      SM1000是一个简易的运动控制芯片系列,它提供长达32位的可编程计数和脉冲发生的功能,脉冲频率可以高达10M赫兹以上,同时在芯片内部增加了许多系统性的资源,比如:内置3-8译码器、地址锁存器、矩阵键盘扫描接口和通用I/O等。由于芯片是SOPC技术方案,因此还可以根据客户的具体需求做定向化的设计。

      SM1000简易而又方便于客户应用,它面向更广泛、更一般的运动控制应用领域。利用它结合MCU/CPU可以便捷地组建成一个运动控制系统,尤其是一些嵌入式、系统集成的应用系统。

      SM1000非常适合于独立多轴的马达控制场合,同时结合控制软件也可以非常灵活地实现常见的加减速运动控制,甚至多轴联动控制。

      以下是SM1000系列芯片技术特点和应用介绍。

一、SM1000芯片方案的技术指标

      ⑴ 输入时钟CLK频率最高到78MHz;
      ⑵ 1-4路32位计数器,可达计数范围为:1~ 2,147,483,647; 
      ⑶ 1-4路32位直接脉冲分频器,可设置频率系数范围为:1~ 2,147,483,647; 
      ⑷ 1-4路正/反向脉冲输出,可接成差分输出; 
      ⑸ 1-4路正/反向脉冲输出有效指示,可接成差分输出;
      ⑹ 最高输出脉冲频率为:CLK/64(SM1001不同);
      ⑺ 其他功能:
      a) 内置3-8译码器,输出7个附加片选信号;
      b) 8通用输入+8通用输出; 
      c) 可接8x8矩阵键盘,直接读取按键编码/有效值;
      d) 8位数据接口(内置地址锁存,可以直接接MCS51 CPU)。

二、SM1000系列规格

ic72 技术资料

三、SM1000功能框图

ic72 技术资料
图1. SM1000功能框图
 

      1. 复位

      2. 锁存

      3. 总线

      4. 2-4路计数器

      5. 2-4路32位脉冲分频器

      6. GPIO

      7. 3-8译码器

      8. 8x8矩阵键盘

四、功能引脚介绍

ic72 技术资料

五、应用方向举例

      1. 步进马达控制器

      2. 轻纺设备:缝纫机/绣花机等

      3. 机器手/臂

      4. 空间座标测量/定位系统

      5. 经济型通用运动控制器

      6. 钻孔、铣边设备

      7. 其他

六、编程应用介绍

      A、CPU接口

      该芯片采用通用8051 8位地址/数据复用接口。由于芯片内置了地址锁存器,因此可以直接与8051单片机地址/数据总线相连,而不需要通过地址锁存器分离出地址和数据总线。另外,该芯片内置了一个3-8译码器,可以输出7个片选信号,以供用户扩展地址译码用。这样,极大地方便了用户基于8051单片机的应用系统设计。整个接口只需要14根线。包括:

      a) 8根地址/数据总线:AD0~7
      b) 3根片选线:CS1~3 
      c) 1根地址锁存允许线:ALE 
      d) 1根读允许线:RD_n
      e) 1根写允许线:WR_n

      输出7根片选线,地址划分见地址分配表。

      B、地址分配

ic72 技术资料

      C、CPU读/写操作

      读写脉冲计数器:

      脉冲计数器的值可以用命令直接写,但要读出时,就必须先用锁存脉冲计数器值命令,先锁存起来,再用命令直接读;如下所示。

      写脉冲计数器操作格式:

      a、(*地址)= 数据 ;

      其中:地址=基地址+0+nn*16+mm; nn=(0~3)为通道号,mm=(0~3)为字节地址;

      数据为8位字节数据。

      读脉冲计数器操作格式:

      a、(*锁存地址)= 任意数据;

      b、变量=(*读地址);

      其中:锁存地址=基地址+10+nn*16; nn=(0~3)为通道号,10为锁存脉冲计数器地址;

      锁存命令的数据为8位字节任意数据,其值无意义。

      读地址=基地址+0+mm; mm=(0~3)为字节地址;

      注意:脉冲计数器长度为32位,允许全范围设置:0x00000000~0xFFFFFFFF。实际输出脉冲个数由下面公式给出:

      脉冲个数=(脉冲计数器值+1)/2;

      当脉冲计数器值为最大值0xFFFFFFFF时,允许最大脉冲个数为2,147,483,648。

      当脉冲计数器值为最小值0x00000001时,允许最小脉冲个数为1。

      其中,脉冲计数器值应该为奇数,如为偶数,则最后一个脉冲宽度很窄。输出脉冲为对应频率的方波。

      写脉冲频率数据:

      写脉冲频率数据操作格式:

      a、(*地址)= 数据 ;

      其中:地址=基地址+4+nn*16+mm; nn=(0~3)为通道号,mm=(0~3)为字节地址;

      数据为8位字节数据。

      32位情况:脉冲频率值长度为32位,允许设置范围为:0x00000001~0xFFFFFFFF。实际输出脉冲频率由下面公式给出:

      当脉冲频率值<0x00800000 时:

      脉冲频率=(输入时钟频率/228)*脉冲频率值;

      当脉冲频率值≥0x00800000 时:

      脉冲频率=(输入时钟频率/(236+228)*脉冲频率值。

      24位情况:脉冲频率值长度为24位,允许设置范围为:0x000001~0xFFFFFF。实际输出脉冲频率由下面公式给出:

      当脉冲频率值<0x00400000 时:

      脉冲频率=(输入时钟频率/225)*脉冲频率值;

      当脉冲频率值≥0x00400000 时:

      脉冲频率=(输入时钟频率/(233+225)*脉冲频率值。

      启动脉冲通道工作:

      启动脉冲通道工作操作格式:

      a、(*地址)= 数据 ;

      其中:地址=基地址+8;

      数据为8bit字节,作为允许启动标志,定义为:

      D0----为1时,允许通道1启动,为0时不启动;

      D1----为1时,允许通道2启动,为0时不启动;

      D2----为1时,允许通道3启动,为0时不启动;

      D3----为1时,允许通道4启动,为0时不启动。

      停止脉冲通道工作:

      停止脉冲通道工作操作格式:

      a、(*地址)= 数据 ;

      其中:地址=基地址+9;

      数据为8bit字节,作为允许停止标志,定义为:

      D0----为1时,允许通道1停止,为0时不停止;

      D1----为1时,允许通道2停止,为0时不停止;

      D2----为1时,允许通道3停止,为0时不停止;

      D3----为1时,允许通道4停止,为0时不停止。

      回读数据锁存:

      CPU要读相应功能的数据,就必须先锁存其数据,才能读;否则,只能读取上次锁存的数据。共有下面三种功能数据:

      1. 脉冲计数器值:32bit;

      2. 通用输入口值:8bit;

      3. 按键编码值: 7bit;

      CPU读数据是按8 bit字节读方式进行的,32 bit脉冲计数器值需要读4次,可按0~3任意顺序读取。8 bit值只能从地址0读取。格式为:

      a、(*锁存地址)= 任意数据;

      b、变量=(*读地址);

      其中:锁存地址和读地址,可参见地址分配表3。

      8/8位通用输入/输出口:

      该芯片包含8位通用输入口和8位通用输出口。

      8位通用输入口读命令为:

      a、(*锁存地址)=任意数据;

      b、变量=(*读地址);

      其中:锁存地址=基地址+12;

      读地址=基地址+0;(所有读地址相同)

      8位通用输出口写命令为:

      a、(*写地址)= 数据;

      其中:写地址=基地址+11;

      写数据为8位字节数据。

      8x8键盘接口:

      该芯片支持8X8矩阵键盘,自动扫描键盘,识别按键键码,CPU通过接口可读取当前按键编码值。命令如下:

      a、(*锁存地址)=任意数据;

      b、变量=(*读地址);

      其中:锁存地址=基地址+28;

      读地址=基地址+0;(所有读地址相同)

      按键编码格式:

ic72 技术资料

      标志位:为1表示有键正按下,为0表示没有按键;

      X:忽略;

      回读码:取0~7为当前按键所对应的行(或列)编码,特指输入线(KBC_0~7);

      扫描码:取0~7为当前按键所对应的列(或行)编码;特指输出线(KBS_0~7);

七、编程示例

//A、地址常量定义:(设芯片基地址为0xe000)

#define MC_sys_CLK 32000000 //定义芯片工作频率

#define MC_CNT_WR_Base_Addr (volatile unsigned char *) 0xe000 //定义计数器值写基地址

#define MC_CNT_Latch_WR_Base_Addr (volatile unsigned char *) 0xe00A //定义计数器锁存写基地址

#define MC_FRQ_WR_Base_Addr (volatile unsigned char *) 0xe004 //定义频率值写基地址

#define MC_Startup_WR_Base_Addr (volatile unsigned char *) 0xe008 //定义启动写基地址

#define MC_Stop_WR_Base_Addr (volatile unsigned char *) 0xe009 //定义停止写基地址

#define MC_GPOut_WR_Base_Addr (volatile unsigned char *) 0xe00B //定义通用输出值写基地址

#define MC_GPIn_Latch_WR_Base_Addr (volatile unsigned char *) 0xe00C //定义通用输入值锁存写基地址

#define MC_KB_Latch_WR_Base_Addr (volatile unsigned char *) 0xe01C //定义键盘编码值锁存写基地址

#define MC_ RD_Base_Addr (volatile unsigned char *) 0xe000 //定义回读值读基地址

//B、子程序片:

//0、延迟子程序:芯片读/写命令间要求有一定的定时间隔。

void delay(int n)

{ int i;

for( i = 0; i}

//1、写第n通道脉冲数值(必须为奇数)

cnt = Np*2-1;

MC_CNT_WR_Base_Addr[n*16+0] = (char)((cnt>> 0) & 0x0ff);delay(10);

MC_CNT_WR_Base_Addr[n*16+1] = (char)((cnt>> 8) & 0x0ff); delay(10);

MC_CNT_WR_Base_Addr[n*16+2] = (char)((cnt>>16) & 0x0ff); delay(10);

MC_CNT_WR_Base_Addr[n*16+3] = (char)((cnt>>24) & 0x0ff);

//2、读第n通道脉冲数值

MC_CNT_Latch_WR_Base_Addr [n*16+0] = (char)0; delay(10); //锁存第n通道脉冲数值

Cnt = MC_ RD_Base_Addr [0]; delay(10); //回读数据0字节

Cnt |= MC_ RD_Base_Addr [1]<<8; delay(10); //回读数据1字节

Cnt |= MC_ RD_Base_Addr [2]<<16; delay(10); //回读数据2字节

Cnt |= MC_ RD_Base_Addr [3]<<24; //回读数据3字节

if( Cnt ==0xffffffff )

{ //第n通道脉冲输出完处理

}

//3、写第n通道脉冲频率值

Nfrq= frq_pulse*0x10000000/MC_sys_CLK; //注意整数运算溢出问题

MC_FRQ_WR_Base_Addr [n*16+0] = (char)((Nfrq>> 0) & 0x0ff); delay(10);

MC_FRQ_WR_Base_Addr [n*16+1] = (char)((Nfrq>> 8) & 0x0ff); delay(10);

MC_FRQ_WR_Base_Addr [n*16+2] = (char)((Nfrq>>16) & 0x0ff); delay(10);

MC_FRQ_WR_Base_Addr [n*16+3] = (char)((Nfrq>>24) & 0x0ff);

//4、启动多个通道脉冲工作

MC_Startup_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ;

//5、停止多个通道脉冲工作

MC_Stop_WR_Base_Addr[0] = (F0 & 1) | ((F1<<1)&2) | ((F2<<2)&4 | ((F3<<3)&8) ;

//6、8位通用输出口输出

MC_GPOut_WR_Base_Addr [0] = (char)(GPOut &0x0ff) ;

//7、8位通用输入口输入

MC_GPIn_Latch_WR_Base_Addr [0] = (char)0; delay(10); //锁存通用输入口值

GPIn_V = MC_ RD_Base_Addr [0] ;

//8、7位键盘按键编码输入

MC_KB_Latch_WR_Base_Addr [0] = (char)0; delay(10); //锁存按键编码值

KBCode = MC_ RD_Base_Addr [0] ;

if(KBCode & 0x80)

{

//当前有按键按下处理

}

八、基于SM1000的运动控制系统框图

      在图2方案里,除了1-4轴运动控制本身之外,在板上根本不需要译码器、锁存器之类的芯片,按键扫描电路也节省了不少MCU带宽开销,数字量通用输出/输入也增加了系统的控制方便性。

ic72 技术资料
图2. 基于SM1000的运动控制系统框图
 

 
【相关文章】
·用EZ-USB实现TMS320C6X与主机数据传输
·基于C8051F单片机的红外轴温探测器零点校正技术
·基于CPLD的编码器解码接口、PWM输出方案及其在运动控制卡和伺服驱动器中的应用
·基于SOPC的简易运动控制芯片方案
·MAX2140内部ESD二极管的保护电路设计
·基于DSP与AD9852的任意信号发生器
·绿色工程在可靠性和物流方面所面临的挑战
·用4BIT OTP单片机实现USB/PS2 MOUSE的设计
 
 
新闻搜索
 
新闻热点
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
Zetex迷你晶体管功率达1.25W
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9