请问哪位同行用LPC2138的SPI读写过SC16IS750,我写入各寄存器读出来全是FF。
LPC2138的SPI读写SC16IS750(SPI转串口) SC16IS750的CS置低,SPI选择脚步也置低。
SC16IS750写寄存器数据,我求16位连续写,但2138的SPI控制器数据只能8位写. 2138能否16位连续写.
寄存器测试读写如下。 void MSPI_Init(void) { PINSEL0 = (PINSEL0 & 0xffff00ff) | 0x5500; // 选择管脚为SPI口 SPI_SPCCR = 0x52; // 设置SPI时钟分频 8 SPI_SPCR = (0 << 3) | // CPHA = 0, 数据在SCK 的第一个时钟沿采样 (1 << 4) | // CPOL = 1, SCK 为低有效 (1 << 5) | // MSTR = 1, SPI 处于主模式 (0 << 6) | // LSBF = 0, SPI 数据传输MSB (位7)在先 (0 << 7); // SPIE = 0, SPI 中断被禁止 }
uint8 MSPI_SendData(uint8 data) { SPI_SPDR = data; while( 0 == (SPI_SPSR & 0x80)); // 等待SPIF置位 return(SPI_SPDR); }
void SPI_TEST2(void) { uint8 i,u1,u2,temp,uCmd[12]={x1,0x2,0x3,0x4,0x4,0x5,0x6,0x7,0x8,0x9}; for (i = 0; i < 10; i++) { u1 = uCmd << 3; u2 = u1 & 0x7F; temp = MSPI_SendData(u2); // 写SPI temp = MSPI_SendData(1); u2 = u1 | 0x80;; temp = MSPI_SendData(u2); } }
|