使用 SPI 对 SPI EEPROM 进行数据读写
本示例展示了如何配置和使用 SPI 模块来读取和写入数据。
在这个示例中,您将学习以下任务:
使用 Controller Transfer 模块的 SPI 回环
使用 Controller Transfer 模块对 SPI EEPROM 进行数据读写
使用 SPI Transmit 模块、SPI Receive 模块和中断实现 SPI 回环
使用 SPI Transmit 模块、SPI Receive 模块和 Interrupts 对 SPI EEPROM 进行数据读写
所需硬件
Texas Instruments™ C2000 ControlCARD 或 LaunchPad
Texas Instruments Peripheral Explorer 或 CAT25256 256kB SPI EEPROM Memory。该设备采用标准的 SPI 协议,这种协议也适用于许多其他厂商提供的 EEPROM。有关该设备的更多详细信息,请参阅 CAT25256 数据表。
硬件连接
SPI EEPROM 使用以下 8 位操作码来实现使能、写入数据、读取数据和读取状态。
Command | Opcode | Operation
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
WREN | 6 | Enable Write Operations
WRITE | 2 | Write Data to Memory
READ | 3 | Read Data from Memory
RDSR | 5 | Read Status Register
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _硬件连接取决于 EEPROM 的使用情况。您可以使用 TI 外设资源管理器中提供的 SPI EEPROM,也可以使用单独的 EEPROM 芯片,例如 CAT25256 256kB SPI EEPROM。
Texas Instruments Peripheral Explorer
如果将 ControlCARD 插入 Peripheral Explorer 提供的插槽中,则无需其他连接。
如果将 ControlCARD 插入扩展坞或使用 LaunchPad,则必须在 Peripheral Explorer 和扩展坞或 LaunchPad 之间建立 SPI 连接,如上所示。
Peripheral Explorer | C2000
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
ECAP-1 / SPISIMO | SPISIMO
ECAP-2 / SPISOMI | SPISOMI
ECAP-3 / SPICLK | SPICLK
EPWM-6B / SPISTE | SPISTE
GND | GND
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _CAT25256 256kB SPI EEPROM 存储器
将芯片连接到 C2000 LaunchPad 或 ControlCARD,具体连接方式请参考产品说明。
SPI EEPROM pin | C2000
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
/CS (pin 1) | SPISTE
SO (pin 2) | SPIMISO
/WP (pin 3) | 3.3 V
VSS (pin 4) | GND
SI (pin 5) | SPIMOSI
SCK (pin 6) | SPICLK
/HOLD (pin 7) | 3.3 V
VCC (pin 8) | 3.3 V
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _使用 Controller Transfer 模块的 SPI 回环
Counter Limited 模块将计数器值作为输入发送到 SPI Controller Transfer 模块,接收到的输出数据发送到示波器。在外部模式下运行模型时,您可以在 Scope 模块中观察计数器值。

要运行模型,请执行以下操作:
打开 c28x_spitest_ert 模型。该模型适用于 TI F28379D LaunchPad 硬件板。要配置模型以在其他 TI C2000 处理器上运行,请在配置参数 > 硬件实现窗格中更改硬件板参数。
浏览至硬件实现 > 目标硬件资源 > SPI_A,然后选择启用环回。或者,您可以使用 GPIO 引脚将 SIMO 和 SOMI 物理连接起来,以启用外部环回。
根据处理器选择合适的 SIMO、SOMI、CLK 和 STE 引脚分配值。
在配置参数窗口中,依次点击硬件实现 > Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口.有关更多信息,请参阅利用串行通信进行参数调节和信号记录。
打开硬件选项卡,然后点击监控和调节。在示波器上观察计数器值。
使用 Controller Transfer 模块对 SPI EEPROM 进行数据读写
该模型将各种类型的数据值写入 EEPROM,并从相应的 EEPROM 地址读取数据,以显示通信成功。

SPI 模块配置为将数据位参数设置为 8,以发送 8 位操作码并写入/读取 8 位数据。如果在配置参数中选择 SPI 外设提供的 STE 引脚,则在数据传输之间将取消选择该外设。在这种情况下,使用 Explicit GPIO calls 选项选择片选(由 SPI 模块提供)分配作为 GPIO1,以确保外设在多次数据传输中持续被选中。
该模型由触发子系统、写入 EEPROM 数据子系统和读取 EEPROM 数据子系统以及 Display 模块组成。读取 EEPROM 数据子系统始终被触发,而写入 EEPROM 数据子系统仅在从 EEPROM 读取的数据与要写入 EEPROM 的输入数据不匹配时才会被触发。
写入 EEPROM 数据子系统在每个写入周期之前执行 EEPROM 写入使能操作。使用 Byte Pack 模块将不同类型的输入数据打包成 8 位数据包,然后将数据转换为 uint16。然后使用 Controller Transfer 模块将数据写入地址位置 0x0020 的 EEPROM。之后,程序会通过监视 EEPROM 的状态标志来等待 EEPROM 写入操作完成。
读取 EEPROM 数据子系统从内存位置 0x0020 读取数据,并使用 Byte Unpack 模块将 8 位数据包解包为所需类型的数据。然后使用 Display 模块显示这些数据。
要运行模型,请执行以下操作:
打开 c28x_spi_eeprom 模型。该模型适用于 TI F28379D LaunchPad 硬件板。要配置模型以在其他 TI C2000 处理器上运行,请在配置参数 > 硬件实现窗格中更改硬件板参数。
浏览至硬件实现 > 目标硬件资源 > SPI_A。
输入所需波特率(比特/秒)的值,设为
2000000,并将 STE 引脚分配设置为None。在配置参数窗口中,点击硬件实现,进入 Target hardware resources > 外部模式,将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口。有关更多信息,请参阅利用串行通信进行参数调节和信号记录。
打开硬件选项卡,然后点击监控和调节。观察显示模块中的输出数据。
更改输入数据值并观察变化。
使用 SPI Transmit 模块、SPI Receive 模块和中断实现 SPI 回环
Counter Limited 模块将计数器值作为输入发送到 SPI Transmit 模块。接收 FIFO 配置为当 FIFO 长度为 4 时触发中断。从 SPI Receive 模块接收的长度为 4 的输出数据被重新对齐为单个流并发送到示波器。在外部模式下运行时,您可以在 Scope 模块中观察计数器值。

要运行模型,请执行以下操作:
打开 c28x_spi_interrupt_test_ert 模型。该模型适用于 TI F28379D LaunchPad 硬件板。要配置模型以在其他 TI C2000 处理器上运行,您可以在配置参数 > 硬件实现窗格中更改硬件板参数。
浏览至硬件实现 > 目标硬件资源 > SPI_A,然后选择启用环回。或者,使用 GPIO 引脚将 SIMO 和 SOMI 物理连接起来,以启用外部环回。
根据处理器选择合适的 SIMO、SOMI、CLK 和 STE 引脚分配值。
选择启用接收中断,并将 FIFO 中断级别(Rx) 设置为
4。在配置参数窗口中,点击硬件实现,导航至 Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口。有关更多信息,请参阅利用串行通信进行参数调节和信号记录。
打开硬件选项卡,然后点击监控和调节。在示波器上观察计数器值。
使用 SPI Transmit 模块、SPI Receive 模块和 Interrupts 对 SPI EEPROM 进行数据读写
该模型将各种类型的数据值写入 EEPROM,并从相应的 EEPROM 地址读取数据,以显示通信成功。该模型只能用于 SPI FIFO 长度为 15 的硬件板。

SPI 模块配置为将数据位参数设置为 8,以发送 8 位操作码并写入/读取 8 位数据。如果在配置参数中选择 SPI 外设提供的 STE 引脚,则在数据传输之间将取消选择该外设。在这种情况下,使用 Explicit GPIO calls 选项将片选(由 SPI 模块提供)分配设置为 GPIO1,以确保外设在多次数据传输中持续被选中。接收 FIFO 配置为当 FIFO 长度为 15 时触发中断。
该模型由写入 EEPROM 数据、发送读取命令、读取 EEPROM 数据和数据重新对齐子系统以及 Display 模块组成。使用 STATVAR 变量交替触发写入和读取数据操作。
写入 EEPROM 数据子系统使用 SPI 发送和 SPI Receive 模块执行 EEPROM 写入使能操作。在每个写入周期之前,都会设置模块优先级,以确保首先执行 SPI 发送。使用 Byte Pack 模块将不同类型的输入数据打包成 8 位数据包,并转换为 uint16。然后使用 SPI Transmit 模块将数据写入地址位置 0x0020 的 EEPROM。之后,程序会等待接收中断被触发。当接收中断被触发时,接收 FIFO 中的数据将被读取并丢弃。
然后触发“发送读取命令”子系统,该子系统发送读取命令和地址,其中包含与要读取的数据大小相同的虚拟数据。之后,程序会等待接收中断被触发。当接收中断被触发时,从接收 FIFO 读取数据。
数据重对齐子系统执行字节重排序以创建 8 位字包,然后使用 Byte Unpack 模块将其解包为所需类型的数据。然后使用 Display 模块显示这些数据。
要运行模型,请执行以下操作:
打开 c28x_spi_eeprom_interrupt 模型。该模型适用于 TI F28379D LaunchPad 硬件板。要配置模型以在其他 TI C2000 处理器上运行,请在配置参数 > 硬件实现窗格中更改硬件板参数。
浏览至硬件实现 > 目标硬件资源 > SPI_A。
输入所需波特率(比特/秒)的值,设为
2000000,并将 STE 引脚分配设置为None。选择启用接收中断,并将 FIFO 中断级别(Rx) 设置为
15。在配置参数窗口中,点击硬件实现,导航至 Target hardware resources > 外部模式,并将 Serial port 参数设置为 Windows 系统中 Device Manager > 端口(COM & LTP)处的 COM 端口。有关更多信息,请参阅利用串行通信进行参数调节和信号记录。
打开硬件选项卡,然后点击监控和调节。使用 Display 模块观察输出数据。
更改输入数据值并观察变化。