这个例子展示了如何使用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电缆
试验板线
小案板(推荐)
示例模型如下图所示:
在本任务中,您将连接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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
在本任务中,您将为所支持的Arduino硬件配置Simulink模型。金宝app金宝app
1.打开使用Arduino硬件与基于SPI的EEPROM通信模型。
2.在您的Simul金宝appink模型中,单击模拟>模型配置参数打开配置参数对话框。
3.选择硬件实现窗格中选择所需的Arduino硬件硬件板参数列表。不要更改任何其他设置。
4.点击好吧.
在这个任务中,您将根据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.点击好吧.
在本任务中,您将配置模型以使用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个数据字节。
在这个任务中,您将运行模型外部模式监控从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设备通信。