打印

MC9S08SG32 SPI问题

[复制链接]
2380|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
win2000_li|  楼主 | 2008-9-1 19:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在用SPI来读写ST95040(EEPROM),搞了一天了,还是不对,SPI有数据输出,而95040一点反应也没有.不知道哪里出错,请搞过的兄弟们帮我看一看.哪里有错
误.


//三线制,MOSI MISO SCLK  
void SpiInit(void)
{
    SPIC1 = 0x5c;    // Master mode, SPI enable.   
    SPIC2 = 0x00;    //                                  
    SPIBR = 0x00;    //  2MHZ                                   
    PTADD_PTADD7 = 1;// Out
}


unsigned char Read_SR(void)
{
    unsigned char Tmp;

    SPID = 0x05;               //M95040 Read Stat Register
    while (!SPIS_SPTEF);

    Tmp = SPID;
    while (!SPIS_SPRF);

    return Tmp;
}


unsigned char EepromByteRead(unsigned int EepromAddr)
{
    unsigned char Tmp;
     
    SPID = 0x03;               //M95040 Read Command
    while (!SPIS_SPTEF);

    SPID = EepromAddr;         // M95040 Read Address
    while (!SPIS_SPTEF);
    
    Tmp = SPID;
    while (!SPIS_SPRF);

    return Tmp;
}

oid EepromByteWrite(unsigned char EepromAddr, unsigned char data)    
{
    SPID = 0x01;              //M95040 Wrtie Stat Register
    while (!SPIS_SPTEF);

    SPID = 0x06;              //M95040 Write Enable
    while (!SPIS_SPTEF);
    
    SPID = 0x02;              //M95040 Send Write Command
    while (!SPIS_SPTEF);        

    SPID = EepromAddr;            //Send Writen Address
    while (!SPIS_SPTEF);
       
    SPID = data;                   //Writen 8 bit  MSB
    while (!SPIS_SPTEF);
}

相关帖子

沙发
win2000_li|  楼主 | 2008-9-1 19:38 | 只看该作者

还有一个问题

在程序出现这样的语句(SPIS; SPID;)是什么意思????
voi xxx(xxx)
{
xxxxxx;
xxxxxx;
xxxxxx;
  SPIS;
  SPID;
xxxxxx;
xxxxxx;

使用特权

评论回复
板凳
张明峰| | 2008-9-2 16:08 | 只看该作者

没见你有CS的控制

SPI操作必须通过CS控制发起.

 SPIS;
 SPID;
表示对这两个寄存器进行读操作

使用特权

评论回复
地板
win2000_li|  楼主 | 2008-9-3 09:15 | 只看该作者

谢谢兄弟!!!

您的意思是我必须要接CS了???

以下的图是我的昨天晚上抓的,每8个脉冲有一个字节的发出数据,我对照过。

都是正确的,但是ST95040就是没有反应。

使用特权

评论回复
5
win2000_li|  楼主 | 2008-9-3 09:16 | 只看该作者

说明!!

黄色的波形是SCLK时钟输出

绿色的波形是MOSI输出的数据

使用特权

评论回复
6
win2000_li|  楼主 | 2008-9-3 13:12 | 只看该作者

OK

"SPIS;
SPID;
表示对这两个寄存器进行读操作
"

写操作,是写什么呢???写0x00;吗???

使用特权

评论回复
7
张明峰| | 2008-9-3 23:01 | 只看该作者

必须接CS

否则就是瞎掰。

“写操作,是写什么呢???写0x00;吗???”
这程序是你自己写的吗?居然连寄存器写什么都不知道?你一楼上贴的代码里那些“SPID=xx”都是为吗?

使用特权

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

本版积分规则

142

主题

718

帖子

1

粉丝