主要内容

使用Arduino硬件与基于spi的EEPROM通信

这个例子展示了如何使用Simulink®支持包为Arduin金宝appo®硬件启金宝app用和写/读基于SPI的EEPROM。

金宝app支持的硬件:

  • Arduino Uno

  • Arduino超级2560

  • Arduino兆理应

  • Arduino由于

  • Arduino达芬奇

  • Arduino MKR1000

  • Arduino MKR WIFI 1010

  • Arduino MKR零

  • Arduino Nano 33物联网

  • Arduino Nano 33 BLE Sense

  • 其他Arduino派生板具有SPI模块

这个示例的可用版本:

Arduino Mega 2560板:arduino_SPI_EEPROM

所提供的型号为Arduino Mega 2560预配置。您可以在“受支持的硬件”一节中列出的任何单板上运行此模型,通过更改本例任务2中描述的“硬件单板”参数。金宝app

介绍

金宝appSimu金宝applink Support Package for Arduino Hardware可以使用SPI接口与基于SPI的设备通信。

在本例中,您将学习如何通过SPI与Arduino板的EEPROM接口通信。该示例使用256kB的“ON Semiconductor EEPROM CAT25256”。该设备使用标准SPI协议,该协议是由不同供应商提供的许多其他eeprom共同使用的。请确保您的选项与本例中使用的选项兼容。关于设备的详细信息,请参见CAT25256数据表

这个例子展示了如何编程Arduino板写入和从EEPROM读取。

先决条件

在你开始这个例子之前,我们建议你完成:

所需的硬件

要运行此示例,您将需要以下硬件:

  • 金宝app支持Arduino电路板

  • CAT25256 256kB SPI EEPROM内存

  • USB电缆

  • 试验板线

  • 小案板(推荐)

模型

示例模型如下图所示:

任务1 -将EEPROM连接到Arduino硬件

在本任务中,您将连接EEPROM到Arduino板。

1.使用下列电路图将EEPROM连接到Arduino板上:

SPI eepm销| Arduino兆2560针  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ / CS(销1)| 53所以(销2)| 50 / WP(销3)| 5 V VSS(销4)|接地SI(销5)| 51 SCK(销6)| 52 /持有(销7)| 5 V VCC(销8)| 5 V  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

任务2 -为支持的Arduino硬件配金宝app置Simulink模型金宝app

在本任务中,您将为所支持的Arduino硬件配置Simulink模型。金宝app金宝app

1.打开使用Arduino硬件与基于SPI的EEPROM通信模型。

2.在您的Simul金宝appink模型中,单击模拟>模型配置参数打开配置参数对话框。

3.选择硬件实现窗格中选择所需的Arduino硬件硬件板参数列表。不要更改任何其他设置。

4.点击好吧

任务3 -配置Simulink模型的SPI属性金宝app

在这个任务中,您将根据EEPROM支持的SPI设置配置模型的SPI属性。金宝app

1.点击目标硬件资源>SPI属性

2.设置SPI属性中的参数。按照CAT25256数据表, EEPROM支持的最大金宝appSPI时钟频率为20 MHz。EEPROM锁存SCK时钟上升沿上的输入数据,并移出SCK时钟下降沿上的数据。此行为对应于Arduino Mega 2560上的SPI模式0(时钟极性0,时钟相位0)和3(时钟极性1,时钟相位1)Arduino Mega 2560 datasheet.EEPROM首先开始移动MSB。

3.点击好吧

任务4 -配置Simulink模型使用金宝appSPI WriteRead块写和读数据

在本任务中,您将配置模型以使用SPI WriteRead块。您将运行模型外部模式查看读取的数据。

1.打开使用Arduino硬件与基于SPI的EEPROM通信模型。

2.注意模型中的两个子系统:

One_time_initialization子系统启用EEPROM并向其写入数据。

Execution_loop子系统从EEPROM中读取数据。

  • One_time_initialization子系统只在模型执行的第一步执行一次。在剩下的执行时间里Execution_loop子系统运行。子系统的选择性执行是使用单位延迟启用子系统块从Simulink库。金宝app

  • EEPROM使用下面的操作码来进行使能、写和读操作CAT25256数据表

命令|操作码|操作  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 雷恩| 6 |支持写操作写| 2 |写数据到内存读| 3 |从内存中读取数据  _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _

3.打开One_time_initialization子系统,注意以下几点:

  • 从属选择(SS)引脚根据电路图中的连接,将SPI WriteRead块的参数设置为53。

  • 在写入EEPROM内存之前,需要开启设备的写操作。的允许写入constant块设置为6连接到SPI WriteRead块。这将WREN命令通过SPI总线发送到EEPROM。

  • 命令,发送要访问的16位EEPROM内存位置和数据字节。

constant block的值为[2 0 10 101:105]发送WRITE命令,后面跟着EEPROM上的16位内存位置10 (0x000A)。它从101发送5个字节到105写入EEPROM。

  • 延迟子系统提供成功完成写操作所需的延迟。

  • 优先权延迟子系统(对应WREN命令)设置为1。优先权SPI WriteRead1block(对应于WRITE命令)设置为任何大于1的值。这确保在发送要写入的数据字节之前,EEPROM已启用写入。

要设置块的优先级,右键单击块> Properties > General > Priority。要了解更多关于块优先级及其对块执行顺序的影响,请参阅指定块的属性

4.打开Execution_loop子系统,并遵循以下原则:

  • 命令,发送您想要访问的16位EEPROM内存位置。阅读n存储的数据数量,需要发送n16位EEPROM存储器位置后面的零数。

constant块的值为[3 0 10 zeros(1,5)],在EEPROM上发送READ命令,后面跟着16位内存位置10。它发送5个0来读取5个数据字节。

任务5 -在外部模式下运行金宝appSimulink模型(监控和调优)

在这个任务中,您将运行模型外部模式监控从EEPROM读取的数据。

1.硬件选项卡中的金宝app模式部分中,选择机上运行然后点击监视和优化

2.Execution_loop子系统、监控显示块来观察从EEPROM读取的数据。

3.单击停止按钮,以结束外部模式执行。金宝app

其他可以尝试的事情

  • 修改SPI模式eepm数据表还有你的Arduino板EEPROM锁存SCK时钟上升沿上的输入数据,并移出SCK时钟下降沿上的数据。这对应于Arduino Due上的SPI模式0(时钟极性0,时钟相位0)和3(时钟极性1,时钟相位1)Arduino由于数据表

  • 将SPI时钟频率更改为EEPROM支持的不同值。金宝app

  • 按照本例中的步骤与其他SPI设备通信。