打印
[ZLG-ARM]

2131SPI主机问题

[复制链接]
1169|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fglswh|  楼主 | 2007-11-27 09:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天又调试了一遍程序,还是不行,很奇怪,如果把开发板和计算机断开连接不通电很长一段时间,再连接起来,做2131的SPI主机实验,7段数码管会闪烁,但也不是正确的从零开始闪,并且到一个数就停了,7段数码管就不动了,以后无论怎么运行程序,数码管都不再变化,我用串口回传数据跟踪了一下:
uint8 MSPI_SendData(uint8 data)
{
    
    uint8 p;    
        IOCLR = (1 << 29);

    SPI_SPDR = data;//赋值要发送的数据
    //p = SPI_SPSR;
    //UART_SendByte(p);//这里接收的是0x00,发送前状态寄存器

    while((SPI_SPSR & 0x80) == 0) ;//等待发送完毕

    //p = SPI_SPSR;
    //UART_SendByte(p);//这里接收的是0x80,发送后状态寄存器
    //p=SPI_SPDR;//读SPI_SPDR会清空SPIF标志,但读SPI_SPSR不清空!

    UART_SendByte(SPI_SPDR);//这里回传的数据始终是00
    
    IOSET = (1 << 29);    
    
    return(SPI_SPDR);
}

为什么回传的数据始终是00呢?数据已经发过去了呀?为什么数码管不变化?
IODIR等都设置了,SPI初始化也没问题,用随机光盘上的程序也不行,难道是595的问题?

相关帖子

沙发
zlgarm| | 2007-11-27 10:44 | 只看该作者

re:~~~

再次检查初始化程序,特别是管脚的连接,还有开发板上跳线有没有设置好~~~

使用特权

评论回复
板凳
fglswh|  楼主 | 2007-11-27 11:11 | 只看该作者

跳线的设置

JP1(ISP):没有短接,也就是默认的设置
JP10:跳线全部选择的SPI功能项
JP11:选择的p0.7
别的就没什么跳线设置了,初始化程序:
PINSEL0 = 0x00005500;               // 设置SPI管脚连接
PINSEL1 = 0x00000000;
IODIR = HC595_CS;

void  MSPI_Init(void)
{  
//PINSEL0 = (PINSEL0 & 0xFFFF00FF) | 0x00005500;// 设置管脚连接SPI
PINSEL0 = (PINSEL0 & (~(0xFF << 8))) | (0x55 << 8) ;
   SPCCR = 0x52;                // 设置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 中断被禁止
}

使用特权

评论回复
地板
lyl831015| | 2007-11-28 08:38 | 只看该作者

主机的从机选择端

主机的SSEL0有接上拉吗?

使用特权

评论回复
5
qinweinai| | 2007-11-28 20:34 | 只看该作者

easyarmjtag-h问题

我用的是easyarm2131在进行axd调试的时候h-jtag总是只能在板子第一次上电的时候才能检测到lpc2131芯片,以后每进行一次都要对扳子重新上电才能检测到芯片。能告诉我是什么原因吗,如何解决?

使用特权

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

本版积分规则

49

主题

92

帖子

0

粉丝