问题标签 [spi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9889 浏览

fpga - 为包含配置比特流和 Microblaze 软件的 Xilinx Spartan-6 创建可引导 SPI 闪存(PROM 文件)的设计流程

我想知道为串行 SPI 闪存创建 PROM 文件 (.MCS) 的正确程序,其中包括 FPGA 配置比特流和 Microblaze 处理器使用的软件。这是假设我的硬件和软件设计都已完成。

我正在使用 Xilinx Spartan-6 评估板 SP605,它具有多个非易失性存储设备,我希望使用串行 SPI 闪存来存储 FPGA 比特流和需要加载到内存中的 Microblaze 软件。只有当 Microblaze 的代码驻留在内部 BRAM 中时,我才能实现这一点。如果我创建我的链接脚本,以便将代码或数据部分放在外部 DDR3 RAM 中,它会失败。

- 编辑 -

好的,所以我尝试了几种不同的方法,并且对我需要做的事情有了更好的理解,但仍然没有成功(顺便说一句,感谢您的回复安迪)。所以,我尝试了两种不同的方法。对于他们两个,我首先将系统比特流与引导加载程序合并以生成一个运行良好的新 .bit (download.bit) 文件(当您在 SDK 中点击程序并选择引导加载程序来加载 BRAM 时,它调用 data2mem 到生成新的 download.bit 文件)。

第一种方法 - BIN 文件

一旦我的主程序完成(使用针对 DDR RAM 和所有的链接器脚本),我调用 mb-objcopy 从 .elf 生成一个 bin 文件:

然后我使用 iMPACT 创建和使用 download.bit 和 dummy.b 的 MCS 文件。我将 download.bit 放在 SPI Flash 的起始地址,然后将 dummy.b 放在更下方(引导加载程序已经指向该地址)。然后我将 MCS 刻录到串行 SPI 闪存,重新启动,引导加载程序运行,并且应该将所有内容复制到 DDR RAM,但是,主程序不起作用。我在这里错过了什么吗?如果我尝试在不将主程序从 .elf 更改为 BIN 的情况下使用 iMPACT,PC 会挂起(有时我什至必须完全重置计算机)并且我有一台速度非常快且配备内存的 PC。

我使用的引导加载程序与 Xilinx XAPP1146 文档中链接的引导加载程序相同。

第二种方法 - SREC 文件

步骤几乎相同,除了我使用相同的 mb-objcopy 命令生成 SREC 而不是 BIN 文件(这次我不删除任何扇区,否则我需要为 BIN 文件执行此操作它会生成一个巨大的文件)。

我使用的引导加载程序是 SDK 软件具有的引导加载程序。

如果您已成功为 Microblaze 创建了引导加载程序,请告诉我。

在此先感谢,埃里克

0 投票
2 回答
9993 浏览

spi - 如何使用 SPI 模式从 SD 卡中读取_single_block(目前出现奇怪的行为)?

当我从 SPI 总线上的 PIC-18F4520 向我的卡发出带有地址 (0x00000000) 的 cmd17 时,我从命令发出中得到了正确的返回 R1 令牌。然后,经过几个循环检查后,我得到了一个 0xFE 标记,该标记从我发出的 SPI_Put_Char(0xFF) 中返回。然后数据应该开始,所以我将 512 个字节读入我的 IO_Buffer 数组。当我扫描返回时,我得到了许多 0x00 字节。奇怪的是,在第 0 扇区的大约 448 位,一些数据过来了——这里和那里的几个字节——然后最后的 32 个字节(我一次只能在我的 LCD 屏幕上查看 32 个)都是零,然后是引导扇区结束时预期的 0x55AA 标记。

奇怪的是,使用磁盘调查器显示 SD 卡具有正确的扇区零信息 - MSDOS 消息、EB 跳转代码,各种东西。我的读取命令将所有内容归零。我只是不明白发生了什么。

其他信息:我使用 cmd0、cmd8、cmd58 启动,并且 OCR 读取正常。然后是 acmd41(循环 cmd55,后跟 APP_SEND_OP_COND)。所有人似乎都做出了回应并给出了预期的标记。最后,我什至使用 SEND_CID 来获取卡信息。返回 MID=3 OID=SD 和版本 SD017 后跟其他信息 - 似乎都是正确的。

我尝试在卡上的 DOUT 上添加上拉和下拉电阻,但不影响任何结果。

我迫切需要一些想法来尝试让这张卡正确阅读。我(顺便说一句)尝试了另外两张卡。它们给出不同的具体结果,但质量相同——初始化、OCR 和 CID 读取都可以正常工作。读取的数据主要给出零,然后是一些可重现但稀疏的字节,以及一个 0xAA55 标记!?!

我的 SanDisk 1GB SD 卡在 3.296 伏下运行,在读卡过程中似乎很稳定。

这是一些代码:

提前谢谢!

0 投票
4 回答
2231 浏览

c# - 从带有 FTDI 的设备获取带有 USB SPI 的视频

我需要为一些带有 FTDI 芯片的卡实现设备管理器。我们正在研究 JAVA 或 C#,我们需要使用它来使用 SPI 传输视频。我们是否需要为 java 或 C# 使用 FTDI DLL?在 java 中实现这个我们会遇到严重的问题吗?

0 投票
1 回答
11229 浏览

spi - SD卡接口使用spi

嗨朋友们,我想使用 spi 连接 SD 卡。我不知道这个主题,例如如何初始化,如何工作。请完全帮助关于 spi SD 卡接口谢谢

0 投票
1 回答
5779 浏览

sd-card - SDHC卡SPI初始化

我正在开发一个目前只支持 SDSC v1 卡的嵌入式系统。由于越来越难找到小于 2 GB 的卡,我正在尝试添加对 SDHC 卡的支持。与卡的通信是通过 SPI 总线完成的。

所以这是我初始化卡的方法:

  • 发送 CMD0。卡返回 0x1
  • 发送 CMD8 + 0x1AA。卡返回 0x1 和 0x1AA
  • 发送 ACMD41。卡返回 0x0。

之后,我阅读了MBR并发现在 0x30 LBA处有一个 FAT16 分区。但是,从该地址 (0x30*512) 读取扇区会返回重复的 0x01 0x09...

  • 发送 ACMD41 时,我发送命令 id 0x69。这是对的吗?还是我应该发送 CMD55 然后发送 CMD1?
  • 1显示我需要在发送 ACMD41 后发送 CMD58 和可能的 CMD16。有必要吗?我能够在不执行它们的情况下读取有效的 MBR。

1. http://elm-chan.org/docs/mmc/mmc_e.html

0 投票
2 回答
9737 浏览

c - SPI 在 STM32F103ZE 中读取数据为零

我正在使用 STM32F103ZE 我没有正确获取 SPI 数据。主控传输正确。但在已发送非零值的情况下,始终读取为零。

主配置:(MSP430)

从机配置(STM32F103ZE)

任何人都有答案,

谢谢哈里

0 投票
1 回答
623 浏览

spi - MSP430 SPI 转 M25P64

我为 MSP430 编写了一个 SPI。如果我将 WRSR(01h) 或 RDSR(05h) 发送到 M25P64 闪存。
我从 Flash SPI_MISO 得到的响应是 FFh。

所以我的问题是“我得到的回应是对的吗?” 如何理解我的 SPI 和 Flash 之间的握手是正确的?

谢谢

AK

0 投票
5 回答
1713 浏览

embedded - 任何更高级别的串行端口通信协议?

我们正在开设机器人课程,Xbee 是学生最喜欢的通信协议。在过去的两年里,我们帮助他们建立了大约 62 个不同的项目(还有 40 个正在筹备中)。

大多数项目都涉及向机器人发送不同类型的数据。有时它是一个 1 字节的命令,而有时它是一个需要解释的长字符串。有时,当一个 xbee 在广播模式下用于向多个特定机器人发送消息时,我们会面临解决机器人问题的问题。学生每次都用他们的创造力来解决这个问题。

我个人觉得这是对轮子的再投资。我想知道是否存在用于串行端口通信的更高级别的协议建议,如果没有任何特定的协议设计,我想知道是否值得为学生需要设计一个。

0 投票
2 回答
1133 浏览

c - SPI 完整的回调处理程序

我正在为 linux 编写一个 SPI 驱动程序。一些相关文档是http://www.mjmwired.net/kernel/Documentation/spi/spi-summaryhttp://ww2.cs.fsu.edu/~rosentha/linux/2.6.26.5/docs/DocBook/kernel -api/ch25.html

大多数情况下,传输都成功执行,并且调用了我的完成回调。当我访问消息时,status我总是看到零(指示)。根据actual_length需要是 112(我的传输长度)。

但是,一段时间后,我可能会收到一个回调actual_length == 0。所有后续调用甚至都有actual_length == 224. 关闭 spi 设备后,回调仍然被调用,消息长度迅速增加(每次调用,它增加了 112),尽管我不再调用spi_async了。

任何人都可以提供可能导致这种行为的提示吗?

非常感谢!

0 投票
1 回答
9253 浏览

spi - SDHC microSD card and SPI initialization

I have a 32 GB Kingston SDHC microSD card which has to communicate to MSP430F2618 via SPI. I was not able to initialize it by using CMD55 + ACMD41 (with bit30 set to 1), as it is described in SD specification paper. What works is this sequence:

I tried it also with a 8 GB SanDisk card and works for that too. So actually, I am using CMD1 here, not ACMD41, with HCS bit set to 1. However, it is not stable, sometimes it works, sometimes it does not. This may be about hardware.

Is it not strange that cards are responding to CMD1 with argument 0x40000000?