This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS570LS0432:SPI3上的 M95256 EEPROM

Guru**** 2040210 points
Other Parts Discussed in Thread: TMS570LS0432, HALCOGEN, TMS570LS1224
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/801348/ccs-tms570ls0432-m95256-eeprom-on-spi3

器件型号:TMS570LS0432
主题中讨论的其他器件: HALCOGENTMS570LS1224

工具/软件:Code Composer Studio

我已经将 TMS570LS0432的 SPI 3与外部 SPIEEPROM 相连接。 当我在 Code Composer Studio 中执行代码时、我可以看到示波器上的 MISO 引脚上可以看到 EEPROM 命令的响应、但 SPI->buf 显示了所有命令的默认值(0x0000FFFF)。 当在示波器上观察 MISO (下图中的蓝色信号)时、即使时钟被禁用、该信号也会保持低电平。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!
    检查是否设置了 PINMUX 和端口配置。
    此外、检查 MCU 的 SPI 时钟模式是否与 EEPROM 时钟模式相同-极性和相位。

    对于 TMS570LS0432:



    此致、
    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已使用以下值配置 SPI3:

    spiREG3->GCR0 = 0U;                     /*全局控制寄存器0 = 0 SPI 处于复位状态。 *

    spiREG3->GCR0 = 1U;                     /*全局控制寄存器0 = 1 SPI 超出复位状态。 *

    spiREG3->GCR1 = 0x00000003U;         /*全局控制寄存器=传输时未激活 SPI,主模式=1,(断电) SPI 激活模式=0,CLK模式=1 (时钟由内部生成)*/

    spiREG3->INT0 = 0x000000000000U;                /* SPI1中断寄存器- SPIENA 引脚被拉高*/

    spiREG3->delay = 0x000000000000U;               

    spiREG3->FMT0 = 0x00004F10U;                /* SPI 时钟信号未延迟、波特率=(80MHz/79+1)= 1mH、SPI 数据格式寄存器0:CHARLEN 16U (数据字长度= 16)*/

    spiREG3->FMT1 = 0x00004F08U;                /* SPI 时钟信号未延迟、波特率=(80MHz/79+1)= 1mH、SPI 数据格式寄存器0:CHARLEN 16U (数据字长度= 8)*/

    spiREG3->LVL = 0x000000000000U;                 /*中断映射到 INT0、但未启用*/

    spiREG3->FLG |= 0xFFFFFFU;                  /*清除任何挂起的中断(写入1清除任何标志)*/

    spiREG3->INT0 = 0x000000000000U;                /*未启用中断*/

    spiREG3->PC3 = 0x0000000FU;                 /****** SPI1端口输出值-引脚控制寄存器0 *//*初始化 SPI1 端口*

    spiREG3->PC1 = 0x0000060FU;                 /* SPI1引脚方向 CS 输出,CLKDIR =输出,SIMDIR0 =输出,SOMIDIR0=输入*/

    spiREG3->PC6 = 0x00000000U;                 针对所有引脚的/* SPI1端口开漏使能*

    spiREG3->PC8 = 0x00000F0FU;                 针对 CS 引脚的/*上拉选择、下拉选择、上拉= CLK、MISO、MOSI */

    spiREG3->PC7 = 0x000000000000U;                 /*为所有引脚启用 SPI1端口引脚拉电阻控制*/

    spiREG3->PC0 = 0x00000F0FU;                 /*将引脚功能设置为 SPI= CS、MISO、MOSI、CLK */

    我已经检查了时钟极性和相位的所有组合。 在这里、我只能在极性= 0和相位= 1时在 MISO 线路上看到数据、反之亦然。 但在 EEPROM 的数据表中、极性和相位的给定组合为00或11。

    但对于给定的组合、我不会在 MISO 引脚获得输出。 我将使用 CS0引脚。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在设置极性和相位时、请遵循两个数据表中的说明并根据说明进行设置。 当 M95256处于 CPOL=0和 CPHA=0时、应将 Hercules 设置为极性=0和相位=1。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Miro、

    我已经设置了相同的极性和相位、但我没有收到读取状态寄存器命令的数据。 当我下拉 MOSI 引脚并禁用其拉控时、我已开始在 SPI Rx_Buf 中接收数据。 但是、当我发送"从存储器阵列读取"命令时、仍然没有在缓冲区中获取数据。 我可以在示波器上看到该命令。 但我没有收到它的任何数据。

    您能不能就此提出建议。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    请使 SPI3的所有未使用引脚不起作用(将所有未使用的 SPI3引脚(SPI3ENA、SPI3CS3、2、1)设定为 GIO)。 您可以在 HALCoGen SPI3->SPI3端口选项卡中执行此操作。 从上面的帖子中、我可以看到所有 CS 以及 ENA 引脚都正常工作。
    转至 HALCoGen 中的 PINMUX 选项卡并选中 SPI3复选框。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已将所有未使用的引脚设置为 GIO 引脚、但在从存储器读取操作后、仍然没有接收任何数据。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    是否可以附加您的 HALCoGen 项目(*。DIL 和*。HCG 文件)以及用于发送/接收数据的代码。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    以下是删除未使用引脚(CS1、2、3和 SPIENA)配置后的新 spi3配置:  

    spiREG3->PC3 = 0x00000F01U;// SPI3端口输出值-CS0、SOMI、clk 引脚处于逻辑1、SIMO 处于逻辑0 *
    spiREG3->PC1 = 0x00000701U;// SPI3引脚方向 CS 输出,CLKDIR =输出,SIMDIR0 =功能,SOMIDIR0=输入*/
    spiREG3->PC6 = 0x000000000000U;//所有引脚的 SPI3端口开漏启用
    spiREG3->PC8 = 0x00000201U;// CS0、CLK 引脚的上拉选择,下拉选择= MISO、MOSI */
    spiREG3->PC7 = 0x0000050EU;//针对 CLK、CS0、MISO 启用 SPI3端口引脚拉电阻控制
    spiREG3->PC0 = 0x00000E01U;//将引脚功能设置为 SPI= CS、MISO、MOSI、CLK */

    如果我仅使用 CS0引脚、此配置是否正确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您是否在解决此问题方面取得了进展?
    如果可能、请附加 HALCoGen 项目(*。DIL 和*。HCG 文件)以及用于发送/接收数据的代码。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我已附加 EEPROM 指令序列以及我已配置的 SPI 初始化。

    谢谢、

    Amruta

    e2e.ti.com/.../7142.eeprom_5F00_Read_2600_Write.docx

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Miro、

    我仍然没有找到任何解决此问题的方法。 您能就此提出什么建议吗?

    谢谢、

    Amruta

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我附加的简单项目是写入/读取/擦除93LC46B 串行 EEPROM (除了写入和读取单个地址之外擦除所有地址)。

    该项目适用于 TMS570LS1224 LaunchPad、但可用作设置 SPI 模块的参考。

    MIBSPI3 nCS0用于从 LaunchPad 读取按钮( if (gioGetBit (mibspiPORT3、0)=0))。

    因为我没有与您相同的 EEPROM、所以我连接了93LC46B 串行 EEPROM。

    93LC46B 的 CS 为高电平有效。 指令的格式不同、但这与接收数据无关。

    e2e.ti.com/.../1738.SPI_5F00_EPROM_5F00_1224PGE.ZIP

    此致、

    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    由于没有来自您的反馈、我将关闭此主题。 您可以始终再次写入以重新打开它、也可以打开新线程、

    此致、
    米罗