[STM32和FPGA配合问题]

STM32和FPGA配合问题

=========================
(2018.11.28)
<设计项目:light_gun>
平台: lattice 2100

场景:FPGA满足一定条件就给stm32发送中断,stm32收到中断后,立马来读FPGA(stm32为spi_master)。
问题 : 每次都得下载jed文件后程序正常,但是重新上电后程序不正常。
正常的数据应该如图1,数据头为10101100(8’hac)

在这里插入图片描述
但是实际收到的数据如下,并且每次都不一样。
在这里插入图片描述

原因:单片机运行速度慢于fpga
当fpga上电后,发中断给单片机,但此时单片机的中断机制还未运行起来,就一直不来读数据,fpga的ram存满后数据就会被覆盖,等单片机来读的时候,数据已经覆盖了,都不知道哪里是数据头了。

解决方法:单片机在原先的基础上延迟一段时间再给fpga上电,保证fpga要发中断的时候,你单片机已经准备好了。

总结:没考虑握手机制,当两块不同的芯片交互的时候,一定要考虑握手机制。其实最优解是单片机把一切都准备好了,表明可以接受中断了,再给FPGA复位。

=========================
(2019-07-25-12:50)
涉及项目: M**Y_AHD_*EC>
平台: lattice ecp5

现象:代码没问题,烧bit流没反应。但烧死(固化)就ok了。

总结:关于单片机上电发的东西,烧bit流是没用了,必须烧死程序,再重新上电。

因为某些寄存器单片机上电的时候已经发了,但这时候fpga的固化档还是老的,即里边还没有后来加的i2c寄存器。所以后来即使再烧bit流,已经错过了。

加新的i2c寄存器的时候,特别是单片机上电就发的新增寄存器,要特别注意,程序一定要烧死先,才能收到。别傻乎乎以为是没加进去。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ethan_WC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值