OpenEdv-开源电子网

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

stm32的FSMC,与CPLD通信

[复制链接]

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
发表于 2017-2-17 09:20:00 | 显示全部楼层 |阅读模式
1金钱
在调试FSMC的时候,使用软件仿真,查看管脚的电平,比如FSMC_NOE(portd.4),和FSMC_NWE(portd.5);向寄存器写值得时候,NOE应该是高电平啊,同时,查看对应的数据FSMC_D0-FSMC_D7应该有值,在程序中,我采用8根地址,8根数据线。程序如下:
图片3为在主函数写值。是方法不对还是其他的?求指教。。。。
1.png
2.png
3.png

最佳答案

查看完整内容[请看2#楼]

看看这个图,编写cpld模块! 编写程序时,把整个程序分解一下,就很清楚了。 再参考一下代码!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-17 09:20:01 | 显示全部楼层
augustedward 发表于 2017-2-17 16:17
我记得NE4是低电平有效的。你CPLD来了,也不知道是不是正确的啊,按时序图写,应该问题不大!

1.jpg 看看这个图,编写cpld模块!

3.jpg 2.jpg
编写程序时,把整个程序分解一下,就很清楚了。
fsmc_bus.rar (574 Bytes, 下载次数: 462)
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-17 09:42:53 | 显示全部楼层
你把CPLD当成一SRAM就可以了,FSMC操作SRAM的代码论坛里一大堆
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-17 09:45:57 | 显示全部楼层
augustedward 发表于 2017-2-17 09:42
你把CPLD当成一SRAM就可以了,FSMC操作SRAM的代码论坛里一大堆

就是当成了SRAM,可不可以用软件仿真,逻辑分析仪查看管脚的状态,和数据对应管脚的状态,来验证代码?
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-17 12:26:35 | 显示全部楼层
taojiang 发表于 2017-2-17 09:45
就是当成了SRAM,可不可以用软件仿真,逻辑分析仪查看管脚的状态,和数据对应管脚的状态,来验证代码?

CPLD估计不行,FPGA可以用signal tap看
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-17 13:56:42 | 显示全部楼层
augustedward 发表于 2017-2-17 12:26
CPLD估计不行,FPGA可以用signal tap看

现在就很纠结,程序写好了,想验证一下是不是可以控制CPLD,但是CPLD还没有回来,我用了FSMCD0-D7作为数据线,FSMCA0-A7作为地址线,然后我写一个值,STM32管脚上面应该会有相应的电平变化,用示波器打D0-D7对应的管脚,都为低电平,NE4是高电平,FSMC_NE4是使能的。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-17 16:17:38 | 显示全部楼层
taojiang 发表于 2017-2-17 13:56
现在就很纠结,程序写好了,想验证一下是不是可以控制CPLD,但是CPLD还没有回来,我用了FSMCD0-D7作为数 ...

我记得NE4是低电平有效的。你CPLD来了,也不知道是不是正确的啊,按时序图写,应该问题不大!
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-17 17:03:19 | 显示全部楼层
已通,结贴。
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-27 15:16:35 | 显示全部楼层
augustedward 发表于 2017-2-17 09:20
看看这个图,编写cpld模块!

谢谢哈,按照时序写出来,用示波器是可以的,如果用KEIL自带的软件仿真。是仿不出来的,接下来调CPLD部分了,还没调过CPLD,
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-27 15:19:13 | 显示全部楼层
taojiang 发表于 2017-2-27 15:16
谢谢哈,按照时序写出来,用示波器是可以的,如果用KEIL自带的软件仿真。是仿不出来的,接下来调CPLD部分 ...

CPLD调试,主要是软件仿真时序。只要软件仿真时序没问题,下载进去问题也不大
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-27 15:21:10 | 显示全部楼层
augustedward 发表于 2017-2-17 09:42
你把CPLD当成一SRAM就可以了,FSMC操作SRAM的代码论坛里一大堆

请教一个问题,STM32与CPLD通信,我应该不需要用verilog写fsmc部分的代码啊?我只需要通过FSMC写寄存器,读寄存器,就可以了。
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-2-27 15:23:57 | 显示全部楼层
taojiang 发表于 2017-2-27 15:21
请教一个问题,STM32与CPLD通信,我应该不需要用verilog写fsmc部分的代码啊?我只需要通过FSMC写寄存器, ...

那你CPLD内怎么判断STM32是写,还是读呢,写哪儿个地址,读哪儿个地址的?
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-2-27 19:31:16 | 显示全部楼层
augustedward 发表于 2017-2-27 15:23
那你CPLD内怎么判断STM32是写,还是读呢,写哪儿个地址,读哪儿个地址的?

读写信号,FSMC_A7-A0连CPLD得管脚,FSMC_D7-D0连CPLD得管脚,写的时候,在STM32中使用FSMC_write函数写值,对应的管脚就会映射出相应电平的变化,比如写01000010,的话,对应的A6和A1为高电平,CPLD的管脚也会有相应的变化,然后在CPLD里面已经下载了程序,对FSMC_A7-A0的电平状态进行解析。然后保存到寄存器里面,
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-3-10 09:20:03 | 显示全部楼层
augustedward 发表于 2017-2-27 15:23
那你CPLD内怎么判断STM32是写,还是读呢,写哪儿个地址,读哪儿个地址的?

大神,我说的这种方法有没有问题?
读写信号,FSMC_A7-A0连CPLD得管脚,FSMC_D7-D0连CPLD得管脚,写的时候,在STM32中使用FSMC_write函数写值,对应的管脚就会映射出相应电平的变化,比如写01000010,的话,对应的A6和A1为高电平,CPLD的管脚也会有相应的变化,然后在CPLD里面已经下载了程序,对FSMC_A7-A0的电平状态进行解析。然后保存到寄存器里面,
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12231
金钱
12231
注册时间
2013-3-8
在线时间
1297 小时
发表于 2017-3-10 09:53:02 | 显示全部楼层
taojiang 发表于 2017-3-10 09:20
大神,我说的这种方法有没有问题?
读写信号,FSMC_A7-A0连CPLD得管脚,FSMC_D7-D0连CPLD得管脚,写的时 ...

对的,就是这样子写的
回复

使用道具 举报

16

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
138
金钱
138
注册时间
2016-11-6
在线时间
20 小时
 楼主| 发表于 2017-3-10 17:13:56 | 显示全部楼层
augustedward 发表于 2017-3-10 09:53
对的,就是这样子写的

所以不用用veilog写FSMC的时序啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-8-24 14:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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