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读写的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 华硕笔记本桌面没有显示计算机,华硕笔记本
- 下一篇: 计算机基础知识(二)-word 2016