zlg,我用lpc11c14的spi接口想扩展一个uart口,结果用max3100这个芯片,写配置后读出来的配置信息根本不对,我怀疑是时序没有对上。4种时序我都试了,都不行,帮忙看看能解决不,项目到最后关口了。
void SPI1Master_Init (void)
{
LPC_SYSCON->PRESETCTRL |= 0x04; /* 禁止SPI1复位 */
LPC_SYSCON->SYSAHBCLKCTRL |= (1ul << 18); /* 打开SPI0外设 */
LPC_SYSCON->SSP1CLKDIV = 0x16; /* SSP时钟分频 */
LPC_SSP1->CR0 = (0x01 << 8) | /* SCR 设置SPI时钟分频 */
(0x00 << 7) | /* CPHA 时钟输出相位, */
/* 仅SPI模式有效 */
(0x00 << 6) | /* CPOL 时钟输出极性, */
/* 仅SPI模式有效 */
(0x00 << 4) | /* FRF 帧格式 00=SPI,01=SSI, */
/* 10=Microwire,11=保留 */
(0x07 << 0); /* DSS 数据长度,0000-0010=保留*/
LPC_SSP1->CR1 = (0x00 << 3) | /* SOD 从机输出禁能,1=禁止 */
(0x00 << 2) | /* MS 主从选择,0=主机,1=从机 */
(0x01 << 1) | /* SSE SSP使能 */
(0x00 << 0); /* LBM 回写模式 */
LPC_SSP1->CPSR = 2; /* PCLK分频值 */
LPC_SSP1->ICR = 0x03; /* 中断清除寄存器 */
}
void Max3100_init( void )
{
unsigned short ack_data;
SPI1_SendData (0xE4);
SPI1_SendData (0xCA);
ack_data = SPI1_SendData (0x40);
ack_data = SPI1_SendData (0x00);
} |
|