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

SSI信号?|已解决

[复制链接]
  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

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

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

    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 12:53
  • 签到天数: 106 天

    [LV.6]常住居民II

    31

    主题

    387

    回帖

    1944

    积分

    荣誉版主

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

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

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

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    9

    主题

    836

    回帖

    3261

    积分

    论坛元老

    积分
    3261
    发表于 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 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

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

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

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

    积分
    860
     楼主| 发表于 2024-4-19 08:10:47 | 显示全部楼层
    angmall 发表于 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圈)
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    10 小时前
  • 签到天数: 160 天

    [LV.7]常住居民III

    9

    主题

    836

    回帖

    3261

    积分

    论坛元老

    积分
    3261
    发表于 2024-4-19 11:42:13 | 显示全部楼层
    380091044 发表于 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











    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    8 小时前
  • 签到天数: 153 天

    [LV.7]常住居民III

    110

    主题

    458

    回帖

    860

    积分

    高级会员

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

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

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-2 10:44 , Processed in 0.067256 second(s), 59 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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