STM32F407与FPGA之间的通讯

原理:STM32F407与FPGA之间的通讯可以总结成STM32将FPGA当作一个片外的SRAM,读写FPGA后,FPGA内部的门电路发生变化,将这些变化变为0或1做输入给FPGA。

1、硬件连接
stm32连接SRAM的引脚固定为那几个,所以选择不多,确认好引脚即可。
2、cubemx设置SRAM。
在这里插入图片描述
FSMC配置生成的代码:
在这里插入图片描述
添加的FSMC读写代码:stm32获取fpga的数据,直接通过地址映射,读取地址即可得到数据。
在这里插入图片描述
main函数中初始化FSMC及中断中调用读,只有读没有写入。
在这里插入图片描述
在这里插入图片描述
FPGA代码:
在这里插入图片描述
遇到的问题:
1、实际使用的FPGA是国产AGM的要用一个软件转换原来的Quartus工程才能下载。要学习软件使用。
2、读出的结果不正确要改代码。
读取的结果是:
在这里插入图片描述
实际应该是 170 、1、2、3、4、5、6、7、8所以要将偏移地址x2,就是WriteAddr和ReadAddr都x2这样输出的结果正确,如下图:
在这里插入图片描述
通讯成功,在STM32的手册中有说明当数据位为16时,地址除以2作为实际寻址地址。注意采用的FSMC的模式是模式A,它的时序如下:也就是要写入和发送时才将写入引脚和读取引脚拉低,不用提前拉低数据。FSCM直接挂在最高的时钟总线AHB3下,因为FSCM对速度要求很高。时钟信号来自于 HCLK(默认 168MHz),控制器的同
步时钟输出就是由它分频得到。
在FSMC初始化中有相关设定:FSMC_ACCESS_MODEA.

在这里插入图片描述
3、读取的数据是固定的几个值 256、32512。
256/32768 = 1/128 32512/32768 = 127/128 根据AD说明手册这是输入量程超了的结果。经测试AD测量不准是因为AINP和AINN引脚的输入超过+312.5mv,正常250mv使得AD的输出异常。短接AINP和AINN,AD输出50%占空比的方波符合预期,读取的数据也刚好是满量程32767的一半16383.
在这里插入图片描述
在这里插入图片描述

问题解决:硬件组修改了板子的配置,AD读取数据正常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值