找回密码
 立即注册
查看: 428|回复: 7

SSI信号?|已解决

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-07 06:52:04
已绑定手机

151

主题

589

回帖

1220

积分

金牌会员

积分
1220
发表于 2024-3-23 22:11:19 | 显示全部楼层 |阅读模式
本帖最后由 STCAI-32位8051 于 2024-4-19 14:21 编辑

SSI信号编码器输出SSI信号如何处理?有哪位老师使用过,

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:464
  • 最近打卡:2025-05-07 07:56:29
已绑定手机
已实名认证

110

主题

2233

回帖

5514

积分

版主

积分
5514
发表于 2024-3-23 23:53:59 | 显示全部楼层
其实就是标准的spi,主机模式直接给sclk读数据就行
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-07 06:52:04
已绑定手机

151

主题

589

回帖

1220

积分

金牌会员

积分
1220
发表于 2024-3-24 07:31:33 | 显示全部楼层
王*** 发表于 2024-3-23 23:53
其实就是标准的spi,主机模式直接给sclk读数据就行

感谢王老师指点,研究理论性东西,我最头疼了,我想哪位老师使用过,针对单片机和SSI通信的例程,研究研究,会应用就行,有一些协议应用软件模块,也行。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-07 00:40:41

10

主题

1162

回帖

5197

积分

论坛元老

积分
5197
发表于 2024-3-24 11:28:55 | 显示全部楼层
SSI接口介绍
SSI即是同步串行接口,是绝对值角度编码器中一种较常用的接口方式,实际的讯号线是两根,一个是时钟输出讯号CLK,一个是数据输入信号DAT,电电气接口采用RS422标准,主要是将时钟输出与数据读入讯号转成差分信号以提高抗干扰性。


可以用SPI主机模式直接给SCLK读数据就行了。
时钟输出讯号SCLK 是 50kHz 到 2MHz

  1. #include "reg51.h"
  2. #include "intrins.h"
  3. sfr     SPSTAT  =   0xcd;
  4. sfr     SPCTL   =   0xce;
  5. sfr     SPDAT   =   0xcf;
  6. sfr     IE2     =   0xaf;
  7. #define ESPI        0x02
  8. sfr     P0M1    =   0x93;
  9. sfr     P0M0    =   0x94;
  10. sfr     P1M1    =   0x91;
  11. sfr     P1M0    =   0x92;
  12. sfr     P2M1    =   0x95;
  13. sfr     P2M0    =   0x96;
  14. sfr     P3M1    =   0xb1;
  15. sfr     P3M0    =   0xb2;
  16. sfr     P4M1    =   0xb3;
  17. sfr     P4M0    =   0xb4;
  18. sfr     P5M1    =   0xc9;
  19. sfr     P5M0    =   0xca;
  20. sbit    SS      =   P1^0;
  21. sbit    LED     =   P1^1;
  22. bit busy;
  23. void SPI_Isr() interrupt 9
  24. {
  25.     SPSTAT = 0xc0;                              //清中断标志
  26.     SS = 1;                                     //拉高从机的SS管脚
  27.     busy = 0;
  28.     LED = !LED;                                 //测试端口
  29. }
  30. void main()
  31. {
  32.     P0M0 = 0x00;
  33.     P0M1 = 0x00;
  34.     P1M0 = 0x00;
  35.     P1M1 = 0x00;
  36.     P2M0 = 0x00;
  37.     P2M1 = 0x00;
  38.     P3M0 = 0x00;
  39.     P3M1 = 0x00;
  40.     P4M0 = 0x00;
  41.     P4M1 = 0x00;
  42.     P5M0 = 0x00;
  43.     P5M1 = 0x00;
  44.     LED = 1;
  45.     SS = 1;
  46.     busy = 0;
  47.     SPCTL = 0x50;                               //使能SPI主机模式
  48.     SPSTAT = 0xc0;                              //清中断标志
  49.     IE2 = ESPI;                                 //使能SPI中断
  50.     EA = 1;
  51.     while (1)
  52.     {
  53.         while (busy);
  54.         busy = 1;
  55.         SS = 0;                                 //拉低从机SS管脚
  56.         SPDAT = 0x5a;                           //发送测试数据
  57.     }
  58. }
复制代码
回复 支持 1 反对 0

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-07 06:52:04
已绑定手机

151

主题

589

回帖

1220

积分

金牌会员

积分
1220
发表于 2024-3-24 15:00:06 | 显示全部楼层
angm*** 发表于 2024-3-24 11:28
SSI接口介绍
SSI即是同步串行接口,是绝对值角度编码器中一种较常用的接口方式,实际的讯号线是两根,一个 ...

感谢老师指点
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-07 06:52:04
已绑定手机

151

主题

589

回帖

1220

积分

金牌会员

积分
1220
发表于 2024-4-19 08:10:47 | 显示全部楼层
angm*** 发表于 2024-3-24 11:28
SSI接口介绍
SSI即是同步串行接口,是绝对值角度编码器中一种较常用的接口方式,实际的讯号线是两根,一个 ...

老师:像这种格雷码编码器如何处理:
C1024格雷码信号-一周输出0-1023码C256C32变形格雷码信号  一周输出0-255码,共转32圈,计0-8191码C256C64变形格雷码信号  一周输出0-255码,共转64圈,计0-16383码C512C32格雷码信号一周输出0-511码,共转32圈,计0-16383码光电编码器SSI信号:1213(一周输出8192码,共转4096圈)、1212(一周输出4096码,转4096圈)
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:527
  • 最近打卡:2025-05-07 00:40:41

10

主题

1162

回帖

5197

积分

论坛元老

积分
5197
发表于 2024-4-19 11:42:13 | 显示全部楼层
38009*** 发表于 2024-4-19 08:10
老师:像这种格雷码编码器如何处理:
C1024格雷码信号-一周输出0-1023码C256C32变形格雷码信号  一周输出 ...

这种格雷码编码器如何处理,要根据手册来处理。



SSI信号编码器输出SSI信号在不同的编码器有不同的输出。
SSI_Table.jpg



数据处理:
编码器输出为格雷循环码, 接收后先以异或的方式, 从高位开始解码为二进制码。 由于格雷码为循环码, 经过最大值码值循环到 0,
即在最大值与 0 间有突变, 因此, 为避免工作行程出现突变数据, 建议采用编码器数据值的中间位置作为工作起始位, 当编码器安装完
毕后, 旋转到实际工作起始点, 将编码器电缆芯线的 MIDP 线与电源正短触, 当前信号输出即为编码器总位数输出值的中值, MIDP 线
回到电源 0。 以后接收到的当前测量值转为二进制码后, 应做如下处理:
实际位置值=(C-MidP) × Dir +起始点值
上式中, C 为编码器输出的当前测量值; MidP 为中间位置值, 为 2n-1, 13 位时为 4096, 16 位时为 32768; 25 位为 2048x8192、 28
位为 2048x65536。 Dir 为编码器旋转方向系数, 与计算方向相同为 1, 与计算方向相反为-1,也可通过编码器上的 DIR 线, 连接高低电平
改变。
起始点并非就是 0, 可由用户自行确定标定位置, 由于多圈编码器可以有 4096 圈的连续测量, 从起始点开始, 正传反转均可有 2048
圈连续工作行程。




数据处理:
编码器输出为格雷循环码, 接收后先以异或的方式, 从高位开始解码为二进制码。 编码器安装无需找零。 安装完毕后, 当设备运转
到机械零点时将编码器电缆芯线的 MIDP 线与电源正短触, 当前信号即为编码器输出的实际位置, 以此信号做计算即可。


编码器输出为格雷循环码, 接收后先以异或的方式, 从高位开始解码为二进制码。

Screenshot695-300x191.png     Screenshot696-300x206.png











回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:503
  • 最近打卡:2025-05-07 06:52:04
已绑定手机

151

主题

589

回帖

1220

积分

金牌会员

积分
1220
发表于 2024-4-19 13:53:45 | 显示全部楼层
angm*** 发表于 2024-4-19 11:42
这种格雷码编码器如何处理,要根据手册来处理。

感谢老师分享,
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-7 14:40 , Processed in 0.235027 second(s), 100 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表