打印
[ZLG-ARM]

请教2138的基于UC下SPI访问FLASH问题。

[复制链接]
1321|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lw2008|  楼主 | 2007-3-29 20:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教一个问题:

用的UC中间件SPI模块改的访问AT45DB161B。
写入后,读出来只有0x00和0xFF。

参考了网友LPC2106的SPI访问AT45DB32。


这样改了下,不知可能有何问题。

static OS_EVENT *SPIReviceMbox;
static OS_EVENT *SPISem;
static uint8 UseSPITaskPro;
static uint8 spidata;

uint8 SPIRW(uint8 *Rt, uint8 Data,uint16 timeout)
{
    uint8 temp, err;
    err=OS_NO_ERR;
//    temp = GetOSPrioCur();
//    if (temp == UseSPITaskPro)
//    {
        SPI_SPDR = Data;
        temp = (unsigned int)OSMboxPend(SPIReviceMbox, timeout, &err);
        *Rt = spidata;
//    }
//    else
//    {
//        err=SPIRW_ERR;
//    }
    return err;
}


void SPI_Exception(void)
{
    uint8 temp,temp1;
    OS_ENTER_CRITICAL();
    temp = SPI_SPSR;
    if ((temp & 0x80) != 0)
    {
        temp1 = SPI_SPDR;
        spidata=temp1;temp1=1;
        //当邮箱传递0时会产生超时错,因而使用一个全局变量
        OSMboxPost(SPIReviceMbox, (void *)temp1);    
    }
    if ((temp & 0x10) != 0)
    {
           SPI_SPCR = 0xa0 | SPI_MOD;
    }
    SPI_SPINT = 0x01;    
    VICVectAddr = 0;            // 通知中断控制器中断结束
    OS_EXIT_CRITICAL();
}

相关帖子

沙发
zlgARM| | 2007-4-17 21:27 | 只看该作者

lw2008

用前后台版的SPI例程试试?
要注意以下2点:
1、FLASH芯片焊接没问题,最好用万用表测测;
2、芯片对SPI时序的要求。

使用特权

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

本版积分规则

49

主题

296

帖子

0

粉丝