CH559 SPI主機(jī)模式讀數(shù)據(jù)

配置了主機(jī)模式,并且bS0_DATA_DIR配置為1,在這樣的配置下如何去讀取從機(jī)設(shè)備的數(shù)據(jù)?

我測試的時候發(fā)現(xiàn)讀回的數(shù)據(jù)會重復(fù)出現(xiàn)兩次,代碼如下:

//讀操作


CS2 = 0;

CH559SPI0Write(0xff);

?//mDelaymS (10);

dat = CH559SPI0Read();

?//printf("recv[1]: %02x\r\n", (UINT16)dat);

CS2 = 1;


//初始化

void CH559SPI0HostInit(void)

{

? ? UINT8 i = 0;

? ? PORT_CFG &= ~bP1_OC;

? ? P1_DIR |= (bSCK | bMOSI | bSCS1 | bSCS2 | bSCS3 | bSCS4); //| bSCS);

? ? P1_IE |= bMISO;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //引腳配置

? ? SPI0_SETUP &= ~(bS0_MODE_SLV | bS0_BIT_ORDER);? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//設(shè)置為主機(jī)模式,字節(jié)順序為大端模式

? ? SPI0_CTRL |=? bS0_MOSI_OE? | bS0_SCK_OE | bS0_MST_CLK | bS0_DATA_DIR;? ? ? //MISO輸出使能,SCK輸出使能

? ? SPI0_CTRL &= ~(bS0_2_WIRE);

? ? //SPI0_CTRL &=? ~(bS0_DATA_DIR);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//主機(jī)寫,默認(rèn)不啟動寫傳輸,如果使能bS0_DATA_DIR,

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//那么發(fā)送數(shù)據(jù)后自動產(chǎn)生一個字節(jié)的時鐘,用于快速數(shù)據(jù)收發(fā)

? ? SET_SPI0_CK(6);? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //6分頻

? ? SPI0_CTRL &= ~bS0_CLR_ALL;? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//清空SPI0的FIFO,默認(rèn)是1,必須置零才能發(fā)送數(shù)據(jù)

? ? CS1 = 1;

? ? CS2 = 1;

CS3 = 1;

CS4 = 1;

}


//寫函數(shù)

void CH559SPI0Write(UINT8 dat)

{

? ? SPI0_DATA = dat;

? ? while(S0_FREE == 0);? ? //等待傳輸完成

? ? //printf("dat:%02X\r\n", (UINT16)dat);

//如果bS0_DATA_DIR為1,此處可以直接讀取一個字節(jié)的數(shù)據(jù)用于快速讀寫

}

//讀函數(shù)

UINT8 CH559SPI0Read()

{

? ? SPI0_DATA = 0xff;

? ? while(S0_FREE == 0);

? ? return SPI0_DATA;

}



您好。當(dāng)bS0_DATA_DIR配置為1,讀DATA寄存器和寫DATA寄存器均會產(chǎn)生一次SPI傳輸,因此上面會產(chǎn)生三次SPI傳輸。寫傳輸之后的讀回傳的數(shù)據(jù)需要增加延時等待從機(jī)將數(shù)據(jù)準(zhǔn)備好。后續(xù)問題可以電話咨詢:025-52635387


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频