EDN首页   博客首页

日志档案

发表于 2008-6-27 0:10:59

1

标签: 无标签

关于IO口模拟SPI

               最近有朋友问到IO口模拟SPI的问题,其实光模拟来说,就时序问题,读取和写入一个字节的时序。

                   首先选4个IO口,作模拟用,分别模拟CS、SCLK、SI、SO.即是片选、时钟、数据输入、数据输出。

                   IO口初始化,分别把对应的IO口设置输入输出。CS、SCLK、SO、设置为输出,SI设置为输入。

                     然后就是时序问题了,一般如下:

//设要写的数据是abyte表示。 

CS_1;              //片选高,
SCLK_1;        //时钟高
CS_0;              //片选低,开始工作。
for(i=0;i<8;i++)//循环产生时钟,写入数据。

{
SCLK_0;          //时钟低,下降沿
if(0x80&abyte)
SO_1;        
else
SO_0;
SCLK_1;
abyte<<=1;
}
SCLK_0;
CS_1;

 

//设要读的数据是abyte表示。 

CS_0;

SCLK_1;

for(i=0;i<8;i++)//读取数据值。
{
SCLK_0;
;;
SCLK_1;
abyte<<=1;
if(in_SI)
abyte++;
}
SCLK_0;
CS_1;

系统分类: 单片机   |   用户分类: AVR   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(249)    回复(0)  

投一票您将和博主都有获奖机会!