IO口模擬SPI的問題,其實(shí)光模擬來說,就時(shí)序問題,讀取和寫入一個(gè)字節(jié)的時(shí)序。
首先選4個(gè)IO口,作模擬用,分別模擬CS、SCLK、SI、SO.即是片選、時(shí)鐘、數(shù)據(jù)輸入、數(shù)據(jù)輸出。
IO口初始化,分別把對應(yīng)的IO口設(shè)置輸入輸出。CS、SCLK、SO、設(shè)置為輸出,SI設(shè)置為輸入。
然后就是時(shí)序問題了,一般如下:
//設(shè)要寫的數(shù)據(jù)是abyte表示。
CS_1; //片選高,
SCLK_1; //時(shí)鐘高
CS_0; //片選低,開始工作。
for(i=0;i<8;i++)//循環(huán)產(chǎn)生時(shí)鐘,寫入數(shù)據(jù)。
{
SCLK_0; //時(shí)鐘低,下降沿
if(0x80&abyte)
SO_1;
else
SO_0;
SCLK_1;
abyte<<=1;
}
SCLK_0;
CS_1;
//設(shè)要讀的數(shù)據(jù)是abyte表示。
CS_0;
SCLK_1;
for(i=0;i<8;i++)//讀取數(shù)據(jù)值。
{
SCLK_0;
;;
SCLK_1;
abyte<<=1;
if(in_SI)
abyte++;
}
SCLK_0;
CS_1;