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

如题所述

LZ我给你推荐一款最新的SSI接口转并口模块-SSI208P,完全可以满足你的要求,我用过,感觉简单、可靠、好用,建议你试一试。

SSI208P,主要应用于同步串行接口(SSI)光电编码器高速数据采集系统的板级开发。SSI208P模块将同步串行接口数据转换成并行接口数据,内部集成了SSI同步时钟发生器、脉冲计数器、数据串并转换、接口控制逻辑、输出控制以及收发驱动器(TTL-RS422电平转换)等功能单元,用户无须了解SSI数据格式,该模块自动将SSI数据转换成8位并行数据,简化了SSI编码器与DSP、单片机、PC104等控制器的接口。
1、产品特性:
单3.3V供电,工作电流小于100mA;
通信速率可配置,最高达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。此外,该模块对采集的数据长度(编码器精度)可以进行配置,最高可以采集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 最小值3.0V,典型值:3.3V,最大值:3.6V
功耗 静态电流<70mA,最大电流<100mA
温度范围 -40~85℃
I/O电气特性
输出高电压(VOH) 最小值VCC-0.4V
输出低电压(VOL) 最大值0.8V
输入高电平(VIH) 最小值2V,能承受5V输入
输入低电平(VIL) 最大值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(靳先生) [email protected]
13683263781(陈先生) [email protected]
13552091081(赵先生) [email protected]
温馨提示:答案为网友推荐,仅供参考