1,quartus的编译文件不能带中文,altera自带PLL,RAM的IP核
1-1,PLL参数:inputClk=25M,outC0=100M
1-2,RAM:1-PORT参数:input data[15:0],address[7:0],output_q[15:0]
1-3,STM32显示的原理图是DB0-15,AB16-23.所以FSMC既可以选择复用模式,也可以选择线独立模式
STM32 的IO口对应关系
1-4,FMC 灵活的的存储控制器,用于驱动SRAM,NOR FLASH,NAND FLASH,SDRAM。
STM32的配置选择MUXED NOR FLASH, FMC_NORSRAM_BANK1;此时FPGA==NOR FLASH
1-5,店家例程竟然给了配置模式

1-6,关于地址的使用,为了增加寻址空间,可以对数据线进行复用。
在icore4中,可以实现最大寻址空间为8+16=24,
即2^24的寻址空间
转自 https://blog.csdn.net/chaoshui7758/article/details/50236511
STM32的FSMC支持数据与地址线复用或非复用两种模式
非复用模式:16位数据线及26位地址线分开始用。推荐在144脚及以上的STM32产品上使用该模式。
复用模式:低16位数据/地址线复用。在该模式下,推荐使用地址锁存器以区分数据与地址。
若不使用锁存器:当NADV为低时,ADx(x=0…15)上出现地址信号Ax,当NADV变高时,ADx上出现数据信号Dx。
若使用锁存器:可同时在ADx上得到Ax和Dx。
FSMC中未使用的数据线或地址线可配置为GPIO
对于16位宽度的外部存储器,FSMC将在内部使用HADDR[25:1]产生外部存储器的地址FSMC_A[24:0]。因此,实际的访问地址为右移一位之后的地址。
//由于内部AHB总线的地址HADDR与FSMC总线地址存在一定的映射关系。在进行地址读写操作时,HADDR[0]并没有用到,相当于地址右移了1位
#define fpga_write(offset,data) *((volatile unsigned short int *)(0x60000000 + (offset << 1))) = data //uint32 data
#define fpga_read(offset) *((volatile unsigned short int *)(0x60000000 + (offset << 1)))
经过大量测试,当发送地址超过28位时,会导致单片机卡死
1-7:写命令到指定地址;指定地址不能超过25位;
单个地址的储存数据是低16位的,高16位丢弃,不会被写入到上一个或者下一个地址里面
case 0x11: //写命令到指定地址;指定地址不能超过28位;单个地址的储存数据是低16位的,高16位丢弃,不会被写入到上一个或者下一个地址里面
{
uint32_t addr,cmd;
addr=(UART_Rx_Buff[1]<<24)|(UART_Rx_Buff[2]<<16)|(UART_Rx_Buff[3]<<8)|UART_Rx_Buff[4];
cmd=(UART_Rx_Buff[5]<<24)|(UART_Rx_Buff[6]<<16)|(UART_Rx_Buff[7]<<8)|UART_Rx_Buff[8];//此处的高16位无效
fpga_write(addr,cmd);
HAL_Delay(10);
cmd=fpga_read(addr);
printf("写入的数据=%d\r\n",cmd);
break;
}
当addr&0xFE 00 00 00 !=0X0000 0000的时候卡死,即发生地址的高于或等于26位不能为1
0x 01 FF FFFF 单片机可以读取写入
0x 02 00 0000 单片机不能读取写入
2,
1-8,复用模式
2,KEIL5生成bin文件KEIL / MDK生成BIN文件的两种方式
使用相对地址,非常棒
D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L
$K\ARM\ARMCC\bin\fromelf.exe --bin --output=@L.bin !L
3,IAP检验码的说明
多组测试说明 当IROM1:0X1020 0000 时候,UART_Rx_Buff[7]==0x10;UART_Rx_Buff[6]==0x20;
所以检校栈顶地址 if(UART_Rx_Buff[7]==0x08)
4,NORFLASH目前看和PSRAM没有太大区别。
那么作为数据采集系统可以这样传输数据了,
FPGA作为NOR FLASH,进行数据采集,然后将数据以特定的顺序保存在NOR FLASH里面,比如占据0--N个数据地址。
STM32 通过实时读取NOR FLASH的数据来显示。
STM32发送控制命令给FPGA,可以写入命令到N+1,FPGA实时对地址为N+1的命令进行解析