原创 关于IO口模拟SPI

2008-6-27 00:10 6404 6 7 分类: MCU/ 嵌入式

               最近有朋友问到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;

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1407551 2008-10-16 20:27

如果是模拟16位SPI,需要注意什么地方? 请大侠指教。 邮箱:cqnorman@163.com
相关推荐阅读
用户131149 2008-06-29 19:55
080629写了个按键的程序(扫描方式)
        刚刚写了个5个按键,扫描方式检测的。烧写进实验板后发现按起来不够灵敏,常常是按N多次才响应一次,高手帮忙看看什么问题。程序包在下面附件里,打算再用中断方式写一个看看。         ...
用户131149 2008-06-28 14:37
080628我的开发板,有PP
          得空拍了张图,大家可以看看!        ...
用户131149 2008-06-28 11:38
080628我的第一个ARM2410程序(2)
             昨天说了一下工程建立、编译链接及得到BIN文件,现在只要烧写到SDRAM里面就可以跑起来看看现象了。烧写前准备工作要做好。                1.先将板的串口线、...
用户131149 2008-06-28 01:34
080627成功的烧写到板上,跑了我的第一个程序(1)
              今天晚上花了点时间将昨天写好的程序,成功的下到了板上,跑了起来,迈出了实验的第一步。其中用USB下载花了我点时间来装驱动。现在将我跑的第一个程序过程给大家分享下。     ...
用户131149 2008-06-26 22:51
080626Make成第一个实验程序
        经过近两天对ADS和2410用户手册的学习,终于搞定了一个可以烧到板上的实验程序。由于板现在不在宿舍,所以还无法搞定。明天看能不能烧到板上跑起来。程序是从网上淘的一个,做了小小修改,以...
EE直播间
更多
我要评论
1
6
关闭 站长推荐上一条 /3 下一条