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