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.

[参考译文] TMS320F28379D:是否可以配置 f28379d SPI 时钟1.93Mhz?

Guru**** 2530270 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/602456/tms320f28379d-is-it-possible-to-configure-f28379d-spi-clock-1-93mhz

器件型号:TMS320F28379D

大家好、

使用 SPI 接口将 fram 从器件连接到 f28379d controlCARD 实验套件。

根据从器件规格、主 SPI 时钟应以1.92Mhz 工作、这是可行的吗? 请告诉我。

按照 如下方式并 使用多路复用器配置等所有其他设置配置高速模式下的 SPIb 和 BRR 45.875计算。  

//
//计算 BRR:7位波特率寄存器值
// SPI CLK freq = 1.92Mhz
// LSPCLK freq = CPU freq /4 (缺省情况下)
// BRR =(LSPCLK 频率/SPI CLK 频率)- 1.
//
#if CPU_FRQ_200MHz
#define SPI_BRR ((200E6/4)/1.92E6)- 1.
#endif

 谢谢

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

    您好、Ashok、

    这应该是可能的。 它不会在.ot 上为1.92MHz、但它将非常接近它。 我希望您的从器件能够正常工作、但要检查容差。

    200MHz/4/26 = 1.9230MHz

    此致、

    Kris

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

    在示例 SPI 回送项目中、想要确认可以使用 CRO 探测 SPI 时钟500kHz、我想在回送模式下 spiclk 在 spiclk 引脚上不可用、请确认? (可以看到 CRO 上的电压为3.3V)
    //
    //计算 BRR:7位波特率寄存器值
    // SPI CLK 频率= 500kHz
    // LSPCLK freq = CPU freq /4 (缺省情况下)
    // BRR =(LSPCLK 频率/SPI CLK 频率)- 1.
    //

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

    我相信、如果您正确配置 GPIO 多路复用器、它将可用。 但我对此并不肯定。 检查这一点的方法是将 SPI 从回送模式中取出、并查看您是否能够看到 SPICLK。

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

    在 CCS 调试模式下、可以在观察窗口中查看 TX 和 Rx 数据、在 f28379d 实验套件上进行 AM 验证。
    使用 CRO 探测 spiclk 引脚上的时钟、无法查看 CRO 上的频率。

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


    尊敬的 Krish Parent:

    现在、我能够在回送模式下看到 CRO 上的 SPI 时钟。

    我只是想知道 GPIO 多路复用器配置、如果我遵循案例1、即 InitSpibGpio() SPI 时钟不起作用、并且使用 GPIO_SetupPinMux 方法案例2、下面提到的 SPI 时钟功能正常工作。

    如果您知道原因、请告诉我或提出任何意见。
    现在已配置 SPI 高速模式以与从器件通信、SPI 写入成功、SPI 读取未按预期工作。 正在进行相同的调试。
    (二
    案例1:
    //
    InitSpibGpio -初始化 SPIB GPIO
    //
    空 InitSpibGpio()

    EALLOW;

    //
    //为所选引脚启用内部上拉
    //
    //用户可以启用或禁用上拉。
    //这将启用指定引脚的上拉电阻。
    //注释掉其他不需要的行。
    //
    GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0;//启用 GPIO63上的上拉电阻器(SPISIMOB)
    GpioCtrlRegs.GPCPUD.bit.GPIO64 = 0;//启用 GPIO64上的上拉电阻器(SPISOMIB)
    GpioCtrlRegs.GPCPUD.bit.GPIO65 = 0;//启用 GPIO65上的上拉电阻(SPICLKB)
    GpioCtrlRegs.GPCPUD.bit.GPIO66 = 0;//启用 GPIO66上的上拉电阻器(SPISTEB)

    //
    //仅将所选引脚的限定条件设置为异步
    //
    //这将为所选引脚选择异步(无限定条件)。

    GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3;//异步输入 GPIO63 (SPISIMOB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO64 = 3;//异步输入 GPIO64 (SPISOMIB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO65=3;//异步输入 GPIO65 (SPICLKB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO66 = 3;//异步输入 GPIO66 (SPISTEB)

    //
    //使用 GPIO 寄存器配置 SPI-B 引脚
    //
    //这指定哪些可能的 GPIO 引脚将是 SPI 功能
    //引脚。
    //注释掉其他不需要的行。
    //
    GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1;//将 GPIO63配置为 SPISIMOB
    GpioCtrlRegs.GPCMUX1.bit.GPIO64=1;//将 GPIO64配置为 SPISOMIB
    GpioCtrlRegs.GPCMUX1.bit.GPIO65=1;//将 GPIO65配置为 SPICLKB
    GpioCtrlRegs.GPCMUX1.bit.GPIO66=1;//将 GPIO66配置为 SPISTEB

    EDIS;

    (二
    案例2:
    GPIO_SetupPinMux (63、GPIO_MUX_CPU1、15);//GPIO63 - SPIB 从器件输入主器件输出
    GPIO_SetupPinMux (64、GPIO_MUX_CPU1、15);//GPIO64 - SPIB 从器件输出主器件输入
    GPIO_SetupPinMux (65、GPIO_MUX_CPU1、15);//GPIO65 - SPIB clk
    GPIO_SetupPinMux (66、GPIO_MUX_CPU1、15);//GPIO63 - SPIB 从器件 TX 启用

    GPIO_SetupPinOptions (63、GPIO_OUTPUT、GPIO_PushPull);
    GPIO_SetupPinOptions (64、GPIO_INPUT、GPIO_异 步);
    GPIO_SetupPinOptions (65、GPIO_OUTPUT、GPIO_异 步);
    GPIO_SetupPinOptions (66、GPIO_OUTPUT、GPIO_异 步);
    (二

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

    您好、Kris Parent、

    即使在上面提到的案例2中、从器件也不会按预期响应。


    探测所有信号(SPI 时钟、MOSI、MISO、SPISTE)、SPI 时钟对于 SPI 发送命令来说是可以的、在这种情况下、SPI 时钟不是连续的、这可能是由于从器件获取的预期数据不连续的原因。

    通过在 TRM 第841页的表7-7中添加多路复用器更改(www.ti.com/.../spruhm8f.pdf)、再次回到上述案例1
    )。

    在高速 SPI 模式下、GPxPUD (x=A、B 等) GPxQSEL2会怎么样?

    根据我的理解、下面的引脚应该是这样的、我需要澄清的引脚很少、请告诉我。

    //
    //用户可以启用或禁用上拉。
    //这将启用指定引脚的上拉电阻。
    //注释掉其他不需要的行。
    //
    GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0;//启用 GPIO63上的上拉电阻器(SPISIMOB)
    GpioCtrlRegs.GPCPUD.bit.GPIO64 = 0;//启用 GPIO64上的上拉电阻器(SPISOMIB)
    GpioCtrlRegs.GPCPUD.bit.GPIO65 = 0;//启用 GPIO65上的上拉电阻(SPICLKB)
    GpioCtrlRegs.GPCPUD.bit.GPIO66 = 1;//禁用 GPIO66 (SPISTEB)上的上拉 电阻//从板有外部上拉电阻  

    //
    //仅将所选引脚的限定条件设置为异步,在示例代码中,由于是环回,它是否具有线性?  

    对于外部通信、我们必须将其配置为同步是否正确?
    //
    //这将为所选引脚选择异步(无限定条件)。

    输入鉴定类型:
    0、0同步
    0.1鉴定(3个样本)
    1、0鉴定(6个样本)
    1、1异步(无同步或限定条件)

    GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3;//异步输入 GPIO63 (SPISIMOB) SYNC 或异步?
    GpioCtrlRegs.GPCQSEL1.bit.GPIO64 = 3;//异步输入 GPIO64 (SPISOMIB) SYNC 或异步?
    GpioCtrlRegs.GPCQSEL1.bit.GPIO65 = 3;//异步输入 GPIO65 (SPICLKB) SYNC 或异步?
    GpioCtrlRegs.GPCQSEL1.bit.GPIO66 = 3;//异步输入 GPIO66 (SPISTEB) SYNC 或异步?


    请您澄清一下。

    我们是否必须配置任何其他 GPIO 控制寄存器、请告诉我。

    谢谢

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

    大家好、还是 Kris Parent、


    高速模式下的 SPI、尝试使用以下设置、但从器件未按预期响应、如果有人有输入、请告知我。

    GPxQSEL2同步和异步均已尝试、但没有任何改进。

    (二
    //
    // InitSpibGpio -初始化 SPIB GPIO
    //
    空 InitSpibGpio()

    EALLOW;

    //
    //为所选引脚启用内部上拉
    //
    //用户可以启用或禁用上拉。
    //这将启用指定引脚的上拉电阻。
    //注释掉其他不需要的行。
    //
    GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0;//启用 GPIO63上的上拉电阻器(SPISIMOB)
    GpioCtrlRegs.GPCPUD.bit.GPIO64 = 0;//启用 GPIO64上的上拉电阻器(SPISOMIB)
    GpioCtrlRegs.GPCPUD.bit.GPIO65 = 0;//启用 GPIO65上的上拉电阻(SPICLKB)
    GpioCtrlRegs.GPCPUD.bit.GPIO66=1;//启用 GPIO66上的上拉电阻器(SPISTEB)//主板有外部上拉电阻器

    //
    //仅将所选引脚的限定条件设置为异步
    //
    //这将为所选引脚选择异步(无限定条件)。

    GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 3;//异步输入 GPIO63 (SPISIMOB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO64 = 3;//异步输入 GPIO64 (SPISOMIB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO65=3;//异步输入 GPIO65 (SPICLKB)
    GpioCtrlRegs.GPCQSEL1.bit.GPIO66 = 3;//异步输入 GPIO66 (SPISTEB)

    //
    //使用 GPIO 寄存器配置 SPI-B 引脚
    //
    //这指定哪些可能的 GPIO 引脚将是 SPI 功能
    //引脚。
    //注释掉其他不需要的行。
    //根据 TRM 中的页码:841

    GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 3;//将 GPIO63配置为 SPISIMOB
    GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 3;//将 GPIO64配置为 SPISOMIB
    GpioCtrlRegs.GPCMUX1.bit.GPIO65=3;//将 GPIO65配置为 SPICLKB
    GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 3;//将 GPIO66配置为 SPISTEB

    GpioCtrlRegs.GPBGMUX2.bit.GPIO63 = 3;//将 GPIO63配置为 SPISIMOB
    GpioCtrlRegs.GPCGMUX1.bit.GPIO64 = 3;//将 GPIO64配置为 SPISOMIB
    GpioCtrlRegs.GPCGMUX1.bit.GPIO65=3;//将 GPIO65配置为 SPICLKB
    GpioCtrlRegs.GPCGMUX1.bit.GPIO66 = 3;//将 GPIO66配置为 SPISTEB


    EDIS;


    (二

    谢谢

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

    最后、我可以使用 SPI 正常模式与从器件进行通信。
    从器件子板存在问题。

    谢谢