历史上的今天
今天是:2024年09月24日(星期二)
2019年09月24日 | FPGA配置芯片EPCS读写操作--STM32读写
2019-09-24 来源:eefocus
注意事项:
(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 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; } }
史海拾趣
|
把下面的程序下到单片机后,除了能显示自定义的字符\"现在的温度为:\",就是在温度显示的位置显示“22”,无论怎么样弄18b20也无法改变数值,还请论坛的各位高手解答,调试了很多天了也没找出原因,很急!拜托各位帮忙,先谢谢了 #include #incl ...… 查看全部问答> |
|
一、仿真工具的选择 模拟电路的仿真软件并不多,现在常用的就是三家大的EDA公司的Hspice(Synopsys), Spectre(Cadence), Eldo(Mentor)。Eldo我没用过,不好说。Hspice和Spectre各有特点,Spetre图形界面好,使用容易上手,可视化更好;Hspice还是文 ...… 查看全部问答> |
|
对于50Hz的干扰信号不一定用陷波器, 对于50Hz的干扰不一定用陷波器因为在要求高时陷波器通常很难调试. 如果只是对信号处理用而言,信号频率在高端的话,比如300Hz以上,那最佳方法是作一个300Hz的高通滤波器,这样对50Hz的衰减可达100分 ...… 查看全部问答> |
|
eeworld论坛这里怎么获得积分啊,我初学者,很多问题又都回答不了,拿不了分,但我的分又快用完了…… eeworld论坛这里怎么获得积分啊,我初学者,很多问题又都回答不了,拿不了分,但我的分又快用完了……… 查看全部问答> |
|
IAR编译器以下显示是不是说 FLASH 程序占用8 884 bytes对吗?那也可以说是9K不到是吗? 8 884 bytes of CODE memory 788 bytes of CONST memory (+ 14 bytes shared) 357 bytes of DATA memory (+ 64 bytes shared)… 查看全部问答> |
|
需要将Launchpad的驱动软件拷贝到该软件所在文件夹,压缩包里已经有我在64位win7里的驱动,不知道在其它系统下行不行,如果不行,找到自己操作系统下的驱动拷贝替换。点击工具栏“SETUP”进行配置Erase Info不知道是否也擦除infoA,我没有试验,请 ...… 查看全部问答> |
|
请教各位大神: 我最近做FPGA采集100MHz的信号,另一路同步触发。但触发信号上升沿在40ns左右,最后导致信号波形左右晃动。 请问在FPGA中如何处理可以准确采集到触发信号,排除左右晃动的情况? 目前程序如下: //触发信号提取 always @(posed ...… 查看全部问答> |




