日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FPGA配置芯片EPCS读写操作--STM32读写

發布時間:2024/1/1 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FPGA配置芯片EPCS读写操作--STM32读写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注意事項:

(1)首先STM32需要設置nCE和nConfig信號,即nCE置高,nConfig拉低,獲得EPCS的控制權,而后對EPCS操作,操作完成后需要釋放這兩個管腳,即nCE拉低,nConfig置高。

(2)EPCS的極性為:sck為空閑狀態為高電平,采樣邊沿為SCK的第二個跳變沿,(即上升沿,注意前提是SCK空閑為高)

SPI_InitStruct.SPI_Direction= SPI_Direction_2Lines_FullDuplex;
SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;?
SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
SPI_InitStruct.SPI_CPOL = SPI_CPOL_High;
SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;
SPI_InitStruct.SPI_NSS = SPI_NSS_Soft ;
SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_16;
SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;

(3)EPCS操作時對于地址和指令是MSB的,而對于寫數據卻是LSB的,因為上電FPGA讀取EPCS內部數據時是LSB讀取的。所以有如下操作代碼。

SPI_FLASH_Write_Enable(); ? ? ? ? ? ? ? ? ?//SET WEL

spi_cs_low;
SPI_Send_byte(EPCS16_ByteProgram ); ? ? //write byte
add1 = (u8)((WritingAddr)>>16);
add2 = (u8)((WritingAddr)>>8);
add3 = (u8)((WritingAddr));
SPI_Send_byte(add1); ?
SPI_Send_byte(add2); ?
SPI_Send_byte(add3);?
for(num=0;num<NumByteToWrite;num++)
{
wdata = pBuffer[WritingNum];
if(MSB_SWAP_LSB)
wdata = ((wdata&0x01)<<7)|((wdata&0x02)<<5)|((wdata&0x04)<<3)|((wdata&0x08)<<1)|((wdata&0x10)>>1)|((wdata&0x20)>>3)|((wdata&0x40)>>5)| ? ? ? ? ? ? ? ? ??((wdata&0x80)>>7);
else
wdata = pBuffer[WritingNum];
SPI_Send_byte(wdata);
WritingAddr++;
WritingNum++;
if(WritingAddr%SPI_FLASH_PAGE_SIZE==0 || WritingNum==NumByteToWrite)
{
break;
}
}

總結

以上是生活随笔為你收集整理的FPGA配置芯片EPCS读写操作--STM32读写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。