打印
[ZLG-ARM]

请问哪位同行用LPC2138的SPI读写过SC16IS750,我读出来全是FF。

[复制链接]
2360|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lw2008|  楼主 | 2008-9-24 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问哪位同行用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);  
    }
}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

296

帖子

0

粉丝