OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 8420|回复: 8

分享一个STM32F103VCT6通过FSMC访问FPGA的操作

[复制链接]

10

主题

61

帖子

4

精华

高级会员

Rank: 4

积分
900
金钱
900
注册时间
2014-3-3
在线时间
52 小时
发表于 2018-9-30 14:44:32 | 显示全部楼层 |阅读模式

STM32F103V系列带FSMC的必须是VCT6及以上的型号,低配的V8T6和VBT6型号不带,48脚C系列和64脚R系列也不带FSMC。
以STM32F103VCT6的FSMC对应的IO口如下:

数据总线(16根)
DB0  : PD14
DB1  : PD15
DB2  : PD0
DB3  : PD1
DB4  : PE7
DB5  : PE8
DB6  : PE9
DB7  : PE10
DB8  : PE11
DB9  : PE12
DB10 : PE13
DB11 : PE14
DB12 : PE15
DB13 : PD8
DB14 : PD9
DB15 : PD10

地址总线(8根)
AB16 : PD11
AB17 : PD12
AB18 : PD13
AB19 : PE3  (本程序中未用到)
AB20 : PE4  (本程序中未用到)
AB21 : PE5  (本程序中未用到)
AB22 : PE6  (本程序中未用到)
AB23 : PE2  (本程序中未用到)

控制线(3根)
WR   : PD5
RD   : PD4
CS0  : PD7

在本程序中,地址线只用到了AB16~AB18三根,可表示2^3=8个地址。
数据总线是16位的,可同时读写2Byte的数据。

需要注意的是:

void FSMC_FPGA_WriteByte(u8 WriteAddr,u16 data)
{
        *((unsigned short int*)(Bank1_SRAM1_ADDR + (WriteAddr << 17))) = data;
}

u16 FSMC_FPGA_ReadByte(u8 ReadAddr)
{
        ReadAddr = ReadAddr+1; //这个很重要
        return ( *((unsigned short int*)(Bank1_SRAM1_ADDR + (ReadAddr << 17))) );
}

因为是16位的数据总线,所以地址要右移16+1=17位。
当读取FPGA寄存器时,地址要+1,我也不知道为什么,求大神解答。



程序如下: STM32通过FSMC读取FPGA寄存器.rar (269.55 KB, 下载次数: 445)
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10561
金钱
10561
注册时间
2017-2-18
在线时间
1912 小时
发表于 2018-9-30 18:21:47 | 显示全部楼层
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2018-6-4
在线时间
33 小时
发表于 2019-1-3 22:38:04 | 显示全部楼层
你好,能分享一下STM32和FPGA之间接线的原理图吗~
回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2018-12-27
在线时间
82 小时
发表于 2019-1-4 08:44:44 | 显示全部楼层
谢谢分享。。
回复 支持 反对

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2017-12-4
在线时间
28 小时
发表于 2020-6-1 16:00:43 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

93

主题

746

帖子

1

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1849
金钱
1849
注册时间
2012-9-16
在线时间
286 小时
发表于 2020-6-19 22:01:45 | 显示全部楼层
收藏一下,正好用到
纵浪大化中,不喜亦不惧;应尽便须尽,无复独多虑!
回复 支持 反对

使用道具 举报

5

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2019-1-8
在线时间
30 小时
发表于 2020-7-29 13:27:58 | 显示全部楼层
不明白,16位数据总线就左移16位呗,为什么要左移17位呢?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2017-12-22
在线时间
18 小时
发表于 2022-1-4 17:09:07 | 显示全部楼层
lihhhhhhhhhh
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2022-3-6
在线时间
0 小时
发表于 2022-5-15 11:09:25 | 显示全部楼层
你好,能分享一下STM32和FPGA之间接线的原理图吗~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 05:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表