微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 25aa160使用程序

25aa160使用程序

时间:10-02 整理:3721RD 点击:
单片机使用PIC16F690使用SPI接口与25aa160通讯
void io_spi_w(uchar dat)
{
        uchar value;
        uchar i;
       
        value = dat;
        for(i=0;i<8;i++)
        {
                SCK = 0;
                if(value&0x80) PSI = 1;
                else PSI = 0;
                SCK = 1;
                value <<= 1;                   
        }
}
uchar io_spi_r(void)
{
        uchar val=0;
        uchar i;
       
        for(i = 0; i < 8; i++)
        {
                SCK = 0;
                P_SI = 0;
                SCK = 1;
                val <<= 1;       
                if(PSO)                             //SO起判断返回状态的作用
                           val = val | 0x01;        //如果是1,则置1
                else
                        val = val & 0xfe;        //如果是0,则置0
        }
        return val;
}

SPI:
SDO必须将TRISC<7>清零。
SCK在主模式下降TRISB<6>清0.从模式置1.
CS:低电平选择EEPROM高电平。取消选择进入待机模式。
SO:读周期中下降沿后从此引脚移除数据。
SI :将数据移入该器件,上升沿所存数据。
SCK:同步时钟


通过SPI向芯片内写入一个字节:SI引脚访问。SCK上升沿移入数据.
CS引脚保持低电平

写数据:将CS拉为低向EEPROM中写入WREN指令。8位指令发送完成,将CS拉为高将写使能寄存器
置1.
向25aa160内写入一个字节:通过SPI接口向芯片内写入WREN指令:
void Write_Ena()
{
        CS =1;
        CS =0;
        io_spi_write(WREN);   //将CS拉低并向芯片内部写入WREN指令。
        CS = 0;
        CS = 1;               //写入指令后将CS拉高,将写使能寄存器锁定为1。
}
向25AA160写入一个字节:
写使能寄存器置为1.将CS拉为低,发送WRITE指令继续操作。随后发送地址和要写入的数据。
void Write——Ram(uint addr,uchar dat)
{
        Write_Ena();
        CS =1;
        CS =0;
        io_spi_w(RAM_WRITE);
        io_spi_w(addr>>8);
        io_spi_w(addr&0xff);
        io_spi_w(dat);
        CS =0;
        CS= 1;
        Dly1mS(5);
}

将CS信号拉低选择该器件。将8位READ指令发送到EEPROM发送地址存储器中此地址中
的数据通过SO引脚移出。
读序列:
uchar Read_Ram(uint addr)
{
        uchar val;
        CS =1;
        CS = 0;               //CS信号拉低选择该器件。
        io_spi_w(RAM_READ);   //通过SPI写入READ指令。
        io_spi_w(addr>>8);    //发送地址
        io_spi_w(addr&0xff);   //这是为了实现地址移位么?
        val =io_spi_r();
        CS=0;
        CS =1;                //拉高CS终止读操作。
        return val;
}
单片机的SPI通讯的时序怎么处理,有没有知道datasheet的哪部分有详细说明。25aa160的时序部分都找到了。

上一篇:数码管显示疑惑
下一篇:PID控制程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top