打印
[STM32F1]

stm32与FPGA并行通信

[复制链接]
2561|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
现在的方法是用FSMC来实现,将FPGA当成是SRAM,然后对其写和读实现并行通信的问题。但本人还有一些不太懂的地方希望大家能帮帮忙,发表一下你们宝贵的意见。FSMC的读和写的引脚连接到FPGA的写和读的引脚,然后要写数据给FPGA,问题在于这个写要用什么函数来写呢?我看到书上关于FSMC驱动LCD的例子,当要将数据传到lcd的时候,是直接用到LCD里面的写函数。那FPGA该用什么来写呢?
沙发
Bermanrep| | 2016-8-16 16:21 | 只看该作者
没有用过fsmc的功能,只用过普通的IO口功能

使用特权

评论回复
板凳
JasonWangSE| | 2016-8-16 17:27 | 只看该作者
线连对的话直接访问FSMC映射的地址空间应该就可以

使用特权

评论回复
地板
时光深巷已无她|  楼主 | 2016-8-16 19:36 | 只看该作者
Bermanrep 发表于 2016-8-16 16:21
没有用过fsmc的功能,只用过普通的IO口功能

用普通的IO口怎么能实现通信??

使用特权

评论回复
5
时光深巷已无她|  楼主 | 2016-8-16 19:36 | 只看该作者
JasonWangSE 发表于 2016-8-16 17:27
线连对的话直接访问FSMC映射的地址空间应该就可以

可是可以,程序难写出来

使用特权

评论回复
6
JasonWangSE| | 2016-8-17 08:49 | 只看该作者
时光深巷已无她 发表于 2016-8-16 19:36
可是可以,程序难写出来

怎么难写?相当于FPGA的寄存器在CPU看来就是一段地址空间,比如FPGA映射到0x80000000后的1K,CPU访问这段空间就相当于访问FPGA的寄存器啊,位数得看配置和数据线的连接

使用特权

评论回复
7
时光深巷已无她|  楼主 | 2016-8-17 08:59 | 只看该作者
JasonWangSE 发表于 2016-8-17 08:49
怎么难写?相当于FPGA的寄存器在CPU看来就是一段地址空间,比如FPGA映射到0x80000000后的1K,CPU访问这段 ...

你写过吗?能写一下么

使用特权

评论回复
8
玄德| | 2016-8-17 09:06 | 只看该作者

CPU从FSMC随便读一次,只要数据线和读信号连接正确,就可以读到FPGA的数据。

问题是地址线怎么处理,
要看你的应用,FPGA究竟虚拟了多少存储单元?
如果只有一个单元,地址线就没用,硬件都不用连接,接了也无所谓;
如果有多个单元,就必须加入地址线,同时FPGA内部做译码。



使用特权

评论回复
9
JasonWangSE| | 2016-8-17 10:01 | 只看该作者

得看你的CPU于FPGA是怎么连的,比如FSMC映射到0x80000000,FPGA是32bit的,那直接*(volatile unsigned int)0x80000000=0x12345678就可以写啊

使用特权

评论回复
评论
xiaofei558008 2016-8-17 11:36 回复TA
正解 
10
icecut| | 2016-8-17 10:09 | 只看该作者
越简单的,越不会.
都是那些垃圾教程惹的祸,
基础不好的人就被坑了

使用特权

评论回复
11
besovideo| | 2016-8-17 10:13 | 只看该作者
*(volatile unsigned long *)(FPGA_ADDR+OFFSET) = VALUE_FOR_SET

使用特权

评论回复
12
lr_xgm| | 2016-8-17 10:53 | 只看该作者
16位模式
#define A3P_RW_OFFSET   FSMC_Bank1_NORSRAM1_BASE

#define OX_SX_FREQL                *(uint16 *)(0x20000+A3P_RW_OFFSET)        // 频率发生器DDS低16位

OX_SX_FREQL=0x1234;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

46

主题

247

帖子

4

粉丝