void SPI_Init(void)
{
P_SW2 |= 0x80; // 扩展寄存器(XFR)访问使能
P_SW1 |= 0x0c; // 启动第四组SPI接口
SPSTAT = 0xc0; // 清除标志位
SPCTL = 0xd6; // 忽略SS引脚功能,使能SPI功能,MSB优先,主机模式,下降沿采样数据,速率/4=52/4=13Mhz
IE2 &= 0Xfd; // 关掉SPI中断
DMA_SPI_STA = 0x00; // 清零DMA标志位
DMA_SPI_CFG2 = 0x03; // 不自动控制SS,SS引脚为P3.5
DMA_SPI_CFG = 0xaa; // 1010 1010,SCLK发送时钟,MISO接受信号输入;使能SPI_DMA中断,禁止发送,允许接收。中断优先级3,总线访问优先3
DMA_SPI_CR = 0x81; // 允许SPI_DMA功能,开始操作前清空FIFO
DMA_SPI_RXAH = (u8)((u16)&Encoder_Data >> 8); // 通过SPI协议接受到数据后,将数据写入到这个等号右边的这个地址处
DMA_SPI_RXAL = (u8)((u16)&Encoder_Data);
DMA_SPI_AMT = 2; // 只传输3个字节
HSSPI_CFG2 |= 0x20; // 启动高速SPI模式
}
第12行和第13行的意思是将SPI从MT6701读到的数据写入到Encoder_Data这个数组里面,按照我的理解,应该是Encoder_Data[0]这个字节开始的地址对应RXAL,Encoder_Data[1]这个字节开始的地址对应RXAH,那RXAH是否不应该是 >> 8 的操作而是+8的操作呢?
还是说我理解的不太正确 |