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.

[参考译文] TMS570LS1224:如何使 SPI 中断工作?

Guru**** 2482105 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/697894/tms570ls1224-how-to-make-spi-interrupts-work

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

您好!

我正在尝试将 SPI2主器件和 SPI4作为从器件进行通信。 我正在尝试调用具有中断的 SpiSendData()函数。 sys_startup.c 具有 vim_init()并且我添加了 vim_enable_interrupt 函数、因此 SPI2高电平和低电平、SPI4高电平和低电平在主函数中启用中断。 我的中断线路是 INT0。 SPI2发送中断为高电平、因此 必须调用 spi2HighLevelInterrupt (void)、但 我无法进入中断函数、因为它不会在断点处停止。 我是否遗漏了任何内容?

谢谢

瓦伦

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

    您好!

    LS1224 BGA 封装具有 SPI2和 SPI4、但 LS1224 QFP 封装没有 SPI2。

    由于您手动在 VIM 中启用 SPI2/SPI4中断、请确保 SPI2高级 ISR 被编程到 VIM 通道17 (地址为0x48)、而 SPI4高级 ISR 被编程到 VIM 通道49 (地址为0xC8)。

    SPI2_LVL、SPI4_LVL、SPI2_INT0和 SPI2_INT0被正确配置。 SPI_LVL 中的位值为0意味着中断被映射到高 LEVL (第0行)  

    4.您是否在 SPI4侧获得了 RX 中断?

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

    您好!

    抱歉、在我的电路板上、它显示为 TMS570LS1224CPGE。 因此、在 HALCOGEN 中、它显示 I 1224PGE、因此如果我选择它、就没有 SPI2。

    无论如何、我要执行回送测试、我只需要进入中断。 因此、我将 GCR1置1、时钟置1、主器件置1中的 SPI4回路位保持不变。  

    我在 main 函数中为49调用了 InterruptEnable Function、然后使用中断 spiSendData。  

    现在如何将 SPI4高级编程到 VIM 49中? 我在 Halcogen 中设置它们、在选项卡 VIM 通道32-63中启用它们。 目前所有中断都是高电平的。  

    不、我完全无法进入任何 ISR。 我至少应该进入 SPI4中的 Tx 中断。我只想了解如何进入 ISR。 我是否应该编写任何编写 CPSR 的汇编语言?  

    此致

    瓦伦

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

    您能解释一下 sys_intvecs.asm 和 sys_Svc.asm 有什么作用吗? 不了解它们是如何工作的? 我是否应该对这些文件执行任何操作? 为什么? 很抱歉、我是新手、有很多问题。  
    谢谢!
    e2e.ti.com/.../6215.sys_5F00_intvecs.asme2e.ti.com/.../3125.sys_5F00_intvecs.asm

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

    1.在 CPU 级别,调用_enable_IRQ()以启用 IRQ 中断。 此内在函数清除 CPSR 寄存器中的 I 位。
    2.在 VIM 级、启用通道 SPI2高电平和 SPI4高电平。 如果 HALCoGen 不是该模块(例如 SPI2)、请手动启用它:
    1. sys_vim.c:在 s_vim_init[96U]={...}中、对通道17使用 SPI2 ISR 函数(spi2HighLevelInterrupt)
    2.设置 vimREG-REQMASKSET0的通道17 (SPI2 Hig)=...
    3.在 SI 模块级别:通过设置 SPIINT0寄存器的位8和位9来启用 TX 和 RX 中断
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Varun、

    sys_intvecs.asm 为器件定义了异常矢量表。 被认为足以要求程序执行被中断的严重故障或错误事件。 示例包括尝试执行无效存储器访问、外部中断和未定义指令。 当一个异常发生时、正常的程序流被中断、并且在相应的异常向量上恢复执行。

    Cortex-Rx 器件有7个例外:
    1.复位
    2.未定义
    3.服务
    4.预取
    5.数据中止
    6. IRQ
    七、FIQ