仪器网(yiqi.com)欢迎您!

| 注册 登录
网站首页-资讯-专题- 微头条-话题-产品- 品牌库-搜索-供应商- 展会-招标-采购- 社区-知识-技术-资料库-方案-直播- 视频

问答社区

SSI数据用单片机怎么采集?

井寶♀峩薆尓 2008-12-08 04:56:27 264  浏览
  •  

参与评论

全部评论(1条)

  • liguozheng2006 2008-12-09 00:00:00
    LZ我给你推荐一款Z新的SSI接口转并口模块-SSI208P,完全可以满足你的要求,我用过,感觉简单、可靠、好用,建议你试一试。 SSI208P,主要应用于同步串行接口(SSI)光电编码器高速数据采集系统的板级开发。SSI208P模块将同步串行接口数据转换成并行接口数据,内部集成了SSI同步时钟发生器、脉冲计数器、数据串并转换、接口控制逻辑、输出控制以及收发驱动器(TTL-RS422电平转换)等功能单元,用户无须了解SSI数据格式,该模块自动将SSI数据转换成8位并行数据,简化了SSI编码器与DSP、单片机、PC104等控制器的接口。 1、产品特性: 单3.3V供电,工作电流小于100mA; 通信速率可配置,Z高达2MHz; 24脚双列直插封装,尺寸25.4*25.4*6(mm); 8位数据总线,可接8~32位编码器; 16位数据更新率大于100KHz; 内部时钟,固定时序; 内置422差分驱动。 2、产品介绍: 该模块具有内部时钟,能自动将SSI数据转换成并行数据,对SSI接口数据的读取操作就类似于对A/D、D/A或存储器读取数据的操作一样方便。SSI208P模块通信速率可配置为250KHz、500KHz、1MHz、2MHz,当通信速率配置为2MHz时,对于16位精度的编码器,系统数据更新率不低于100KHz。此外,该模块对采集的数据长度(编码器精度)可以进行配置,Z高可以采集32位数据,分4次输出,该模块可以满足高精度高速伺服控制系统的需求。 3、外形尺寸:25.4X25.4X6(mm) 4、管脚定义及特性参数: (1)管脚定义 1-8 D0-D7 输出 8位数据输出 接处理器数据线 9-12 NC 空管脚 使用时悬空 13 DATA+ 输入 编码器数据线+ 14 DATA- 输入 编码器数据线- 15 CLK- 输出 编码器同步时钟- 16 CLK+ 输出 编码器同步时钟+ 17 H/L 输入 数据高低字节选择 1:高字节,0:低字节 18 /CS 输入 编码器数据输出选择 0:输出选择 19 /END 输出 转换结束 1:正在转换,0:转换结束 20 START 输入 启动转换 上升沿启动转换 21 GND 电源地 22 CLKMD1 输入 同步时钟设置 00: 250KHz 01: 500KHz 10: 1MHz 11: 2MHz 23 CLKMD0 输入 同步时钟设置 24 VCC 电源 3.3V供电 (2)特性参数 电源VCC Z小值3.0V,典型值:3.3V,Z大值:3.6V 功耗 静态电流<70mA,Z大电流<100mA 温度范围 -40~85℃ I/O电气特性 输出高电压(VOH) Z小值VCC-0.4V 输出低电压(VOL) Z大值0.8V 输入高电平(VIH) Z小值2V,能承受5V输入 输入低电平(VIL) Z大值0.8V 5、控制时序: SSI208P控制时序如图4所示。START上升沿启动一次SSI编码器数据收发过程,START电平升高后,125ns内SSI208P模块开始向编码器发送一帧同步时钟脉冲信号,同时转换结束管脚/END变高。发送脉冲期间管脚/END保持高电平状态,转换结束/END管脚电平变低后,即可从D0~D7并行读取编码器数据,每次读取八位,由H/L控制输出数据高低位,0低八位、1表示读取高八位,对于16位编码器需读取两次。编码器并行数据读取结束后将START管脚置低,准备启动下一次转换。 6、应用实例: (1)TMS320F2812接口实例 采用SSI208P模块可以大大简化单片机、DSP、PC104等控制器扩展SSI编码器接口的软硬件设计,下面给出一种基于DSP处理器TMS320F2812的典型应用。 DSP处理器TMS320F2812与SSI208P模块的硬件连接原理图如图5所示。 上例中编码器为单圈16位式角度编码器,SSI208P模块的八位数据总线与TMS320F2812的低八位数据线相连;因使用的编码器为16位,所以仅需一位地址线即可区分编码器数据高八位和低八位;使用外部地址片选管脚/XZCS67作为SSI208P的外部片选信号;使用通用IO口GPIOB4控制SSI208P模块启动;使用通用IO口GPIOB5进行SSI208P模块转换结束状态查询; CLKMD0、CLKMD1接上拉电阻拉高,将SSI208P模块同步时钟频率配置为2MHz。其它控制器的硬件电路依次类推。 由SSI208P模块控制时序图可以看出SSI208P模块的启动转换控制和数据读取操作比较简单,软件流程如图6所示。 对应图5中硬件设计,DSP处理器TMS320F2812相应的软件代码如下所示: #include "DSP28_Device.h" #define SSIL *(int *)0x00100000 //SSI模块低八位地址 #define SSIH *(int *)0x00100001 // SSI模块高八位地址 int SSI_VAL; //编码器数据 main() { …… EALLOW; //配置GPIO4、GPIO5引脚为IO引脚 GpioMuxRegs.GPBMUX.bit.GPIOB4=0; GpioMuxRegs.GPBMUX.bit.GPIOB5=0; GpioMuxRegs.GPBDIR.bit.GPIOB4=1; //GPIOB4配置为输出 GpioMuxRegs.GPBDIR.bit.GPIOB5=0; //GPIOB5配置为输入 EDIS; //启动数据发送及转换 GpioDataRegs.GPBDAT.bit.GPIOB4=0; GpioDataRegs.GPBDAT.bit.GPIOB4=1; for(i=0;i<1;i++); //延时约200ns while((GpioDataRegs.GPBDAT.bit.GPIOB5)!=0); //查询转换是否结束 SSI_VAL=(SSIL&0xFF)|((SSIH<<8)&0xF00; //读取SSI编码器高低八位数据并组合 GpioDataRegs.GPBDAT.bit.GPIOB4=0; …… } (2)C8051F310接口实例 例中编码器为单圈16位式角度编码器,SSI208P模块的八位数据总线与单片机C8051F310的P1端口相连,单片机IO口P2.0控制模块启动转换,P2.1查询转换是否结束,P2.2作为模块片选信号,P2.3区分编码器数据高八位和低八位。CLKMD0、CLKMD1接地,将SSI208P模块同步时钟频率配置为250KHz。原理图如图7所示。 对应图7中硬件设计,单片机C8051F310相应的软件代码如下所示: sbit START =P2^0; //P2.0与START管脚对应 sbit END_N =P2^1; //P2.1与END管脚对应 sbit CS_N =P2^2; //P2.2与CS管脚对应 sbit H_L =P2^3; //p2.3与H/L管脚对应 …… unsigned int SSIL; unsigned int SSIH; unsigned int SSI_VAL; …… void main (void) { …… CONVST=0; for(i=0;i<n;i++); CONVST=1; //启动转换 for(i=0;i<n;i++); //延时 while(END_N!=0); //查询转换是否结束 CS_N=0; //SSI模块片选 H_L=1; //读取编码器数据高字节 for(i=0;i<n;i++); //延时*(1) SSI_H =P1; //从P1端口读取编码器高八位数据 H_L =0; //读取编码器数据高字节 for(i=0;i<n;i++); //延时*(2) SSI_H =P1; //从P1端口读取编码器低八位数据 SSI_VAL=(SSIL&0xFF)|((SSIH<<8)&0xF00; //合并成编码器数据 CONVST=0; CS_N=1; …… } 注:在程序加入延时(1)和延时(2)是因为IO口响应有滞后,需一定的稳定时间。 7、技术服务: 13141393549(靳先生) htjin@asee.buaa.edu.cn 13683263781(陈先生) shelfer@163.com 13552091081(赵先生) 208servo@163.com

    赞(8)

    回复(0)

    评论

获取验证码
我已经阅读并接受《仪器网服务协议》

热门问答

SSI数据用单片机怎么采集?
 
2008-12-08 04:56:27 264 1
值编码器SSI输出的,怎么采集数据
SSI值编码器买来不知道怎么用,高手讲解下啊... SSI 值编码器买来不知道怎么用,高手讲解下啊 展开
2018-04-23 19:26:58 361 1
位移传感器ssI接口的PLC怎么读取数据
PLC是不是需要专门的模块?希望能给个案例精度,成本比模拟量的高多少... PLC是不是需要专门的模块?希望能给个案例 精度,成本比模拟量的高多少 展开
2017-02-11 05:57:15 299 2
怎么远程采集数据
 
2017-05-18 07:38:19 374 2
怎么用物位计采集污水池中污泥数据
 
2016-07-17 14:18:11 285 1
两块数据采集卡怎么同时采集数据?
现在我有两块adlink-9812,插在电脑PCI槽上。两块板子要同时采集同一个信号,也就是把一个信号分两头分别接到两块板子上。问题来了:如果我用软件程序控制,比如read语句,那么就是第... 现在我有两块adlink-9812,插在电脑PCI槽上。两块板子要同时采集同一个信号,也就是把一个信号分两头分别接到两块板子上。问题来了:如果我用软件程序控制,比如read语句,那么就是diyi块先read第二块再read,这样就不是同时采集。有什么办法能做到发个信号让两块板子同时采集呢?翻了下manual没有这种函数 展开
2018-12-02 01:24:00 432 0
水位传感器采集的数据信息如何传到单片机
 
2012-06-09 17:46:40 240 3
单片机怎么采集温度输入信号
 
2015-11-02 10:37:37 323 3
用友数据采集工具采集出来的数据怎么用
 
2016-07-18 08:15:34 227 2
DHT11温湿度传感器怎么把采集到的温湿度数据传给单片机STC89C52
 
2018-12-01 04:59:08 412 0
如何采用matlab对单片机采集的数据进行频谱分析?
我用单片机采集到电动机的振动信号,并通过ad转换器转换为数字信号。但是,这些数字信号如何移植到matlab中,进行频谱分析?
2012-09-14 15:50:27 503 3
科密机怎么采集数据?
 
2009-07-22 23:12:16 328 3
怎么用AT89c52单片机和DHT11温湿度传感器链接采集温湿度
 
2014-04-13 01:37:59 267 1
名词解释(数据)采集
管理系统中计算机应用名词解释(数据)采集... 管理系统中计算机应用 名词解释(数据)采集 展开
2016-07-14 06:04:27 708 2
如何用电脑采集电流电压表的数据
就是希望有某种仪器把这些数据直接输入计算机里。但现在完全不知道该用什么……希望有比较高的采样率和较大的测量范围,还有成本不要太高……
2013-12-14 18:39:36 392 2
如何将单片机温度传感器采集到的数据通过无线传给pc
voiddelay_2us(unsignedchart){while(--t);}/*mS延时函数,晶振12M*/voiddelay_ms(unsignedchart){while(t--){delay_2us(245);delay_2us(245);}}/*18b20初始化*/bitDS18B20_init(){bi... void delay_2us(unsigned char t) {
while(--t);
} /*mS延时函数,晶振12M*/ void delay_ms(unsigned char t) { while(t--) { delay_2us(245); delay_2us(245); } } /*18b20初始化*/ bit DS18B20_init() { bit dat=0; DQ = 1; //DQ复位 delay_2us(5); //稍做延时 DQ = 0; //单片机将DQ拉低 delay_2us(200); //精确延时 大于 480us 小于960us delay_2us(200); DQ = 1; //拉高总线 delay_2us(50); //15~60us 后 接收60-240us的存在脉冲 dat=DQ; //如果x=0则初始化成功, x=1则初始化失败 delay_2us(25); //稍作延时返回 return dat; } /*读取一个字节*/ unsigned char DS18B20_read_byte() { unsigned char i=0; unsigned char dat = 0; for (i=8;i>0;i--) { DQ = 0; // 给脉冲信号 dat >>= 1; DQ = 1; // 给脉冲信号 if(DQ) dat |= 0x80; delay_2us(25); } return dat; } /*写入一个字节*/ void DS18B20_write_byte(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0; DQ = dat & 0x01; delay_2us(25); DQ = 1; dat >>= 1; } delay_2us(25); } /*读取温度*/ unsigned int DS18B20_read_temp() { unsigned char a=0; unsigned int b=0; while(DS18B20_init()==1); DS18B20_write_byte(0xCC); // 跳过读序号列号的操作 DS18B20_write_byte(0x44); // 启动温度转换 delay_ms(10); while(DS18B20_init()==1); DS18B20_write_byte(0xCC); //跳过读序号列号的操作 DS18B20_write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度 a=DS18B20_read_byte(); //低位 b=DS18B20_read_byte(); //高位 return (b << 8) + a; } 程序写到这里,如何将这个数据传回pc端,通过无线传输的方式,还有电脑端如何将接收的数据转换成正确的温度显示出来,可以加q联系,321266619 展开
2013-10-26 07:52:37 390 3
单片机如何对SSI接口的值编码器进行数据采集?
Z好附程序代码加以说明。... Z好附程序代码加以说明。 展开
2013-08-08 23:05:03 270 1
温度传感器采集的数据怎么发给远程终端?
顺便告我下设计思路,选用的温度传感器的型号,发射端的设计,终端的设计。谢谢... 顺便告我下设计思路,选用的温度传感器的型号,发射端的设计,终端的设计。谢谢 展开
2014-04-08 01:19:52 371 2
火车头采集器采集一半数据怎么生成
 
2018-11-14 02:13:48 484 0
数据采集模块是怎么采集数据的
 
2012-04-24 17:33:21 365 4

9月突出贡献榜

推荐主页

最新话题