aerolong

导航

Blackfin通过SPI读写EEPROM

        Blackfin有2个独立的串行外设接口(SPI),分别是SPI0和SPI1。在HAWK-35评估板中,Blackfin通过SPI0与EEPROM相连,在Blackfin上电的时候,初始化DSP芯片。今天,开始测试通过Blackfin对EEPROM进行读写,这样以后就可以把自己的初始化程序写到EEPROM中,使Blackfin按自己的要求进行初始化。
        Blackfin通过4个引脚与EEPROM相连,分别是:MOSI,MISO,SCK,SPISS(Master Out Slave In,Master In Slave Out,Serial Peripheral Interface Clock Signal,SPI Slave Select)。片选信号线为PF10。这里,EEPROM只能工作于从模式。所以Blackfin工作于主模式,按以下顺序操作:
        1、写SPI0_FLG,设置SPI标志选择位,并保证从设备未被选中;
        2、写SPI0_BAUD寄存器,设置波特率;
        3、写SPI0_CTL寄存器,设置系统,使能SPI;
        4、写SPI0_FLG,片选EEPROM。
        对于EEPROM的操作来说,操作码如下图所示:

        DSP的程序对读或是写的操作顺序为
        1、初始化SPI0;(按上面的顺序初始化)
        2、写使能;
        3、写入读/写操作码;
        4、写高位地址;
        5、写低位地址;
        6、读/写操作;
        7、结束访问。(拉低片选信号)
        程序经验证成功。
        后续工作:测试一次读或写操作最可支持多少字节,编写函数加载DSP程序。
续(6.30):
        通过SPI口对EEPROM一次只能读写32个字节,据此,我编写了读写EEPROM的函数,原形如下:
int BF_ReadSPI ( int offset, unsigned char * pBuf, int bytes );
int BF_WriteSPI ( int offset, unsigned char * pBuf, int bytes);
函数先根据bytes数目,定义quot和resid,其中bytes = quot*32 + resid。每一个quot和剩余的resid都执行一次完整的操作。函数经过100字节的数组试验,成功。

posted on 2004-06-14 16:57  aerolong  阅读(3072)  评论(4编辑  收藏  举报