SSI接口介绍
SSI即是同步串行接口,是绝对值角度编码器中一种较常用的接口方式,实际的讯号线是两根,一个是时钟输出讯号CLK,一个是数据输入信号DAT,电电气接口采用RS422标准,主要是将时钟输出与数据读入讯号转成差分信号以提高抗干扰性。
可以用SPI主机模式直接给SCLK读数据就行了。
时钟输出讯号SCLK 是 50kHz 到 2MHz
- #include "reg51.h"
- #include "intrins.h"
-
- sfr SPSTAT = 0xcd;
- sfr SPCTL = 0xce;
- sfr SPDAT = 0xcf;
- sfr IE2 = 0xaf;
- #define ESPI 0x02
-
- sfr P0M1 = 0x93;
- sfr P0M0 = 0x94;
- sfr P1M1 = 0x91;
- sfr P1M0 = 0x92;
- sfr P2M1 = 0x95;
- sfr P2M0 = 0x96;
- sfr P3M1 = 0xb1;
- sfr P3M0 = 0xb2;
- sfr P4M1 = 0xb3;
- sfr P4M0 = 0xb4;
- sfr P5M1 = 0xc9;
- sfr P5M0 = 0xca;
-
- sbit SS = P1^0;
- sbit LED = P1^1;
-
- bit busy;
-
- void SPI_Isr() interrupt 9
- {
- SPSTAT = 0xc0; //清中断标志
- SS = 1; //拉高从机的SS管脚
- busy = 0;
- LED = !LED; //测试端口
- }
-
- void main()
- {
- P0M0 = 0x00;
- P0M1 = 0x00;
- P1M0 = 0x00;
- P1M1 = 0x00;
- P2M0 = 0x00;
- P2M1 = 0x00;
- P3M0 = 0x00;
- P3M1 = 0x00;
- P4M0 = 0x00;
- P4M1 = 0x00;
- P5M0 = 0x00;
- P5M1 = 0x00;
-
- LED = 1;
- SS = 1;
- busy = 0;
-
- SPCTL = 0x50; //使能SPI主机模式
- SPSTAT = 0xc0; //清中断标志
- IE2 = ESPI; //使能SPI中断
- EA = 1;
-
- while (1)
- {
- while (busy);
- busy = 1;
- SS = 0; //拉低从机SS管脚
- SPDAT = 0x5a; //发送测试数据
- }
- }
-
复制代码
|