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:MIBSPI 触发示例怀疑

Guru**** 2538955 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1067351/tms570ls1224-mibspi-trigger-example-doubt

部件号:TMS570LS1224

在示例代码中,MIBSPI 传输如何触发嘀嗒信号计数触发器。 请澄清以下疑问。

FFFF 的响应速度如何达到65.535 ms?

如何进入 mibspiGroupNotification 函数?

示例代码:

/*用户代码开始(0)*/
/*用户代码结束*/

/*包括文件*/

#include "sys_common.h"

/*用户码开始(1)*/
#include "sys_core.h"
#include "ibspi.h"(#include "ibspi.h")
/*用户代码结束*/

/*用户代码开始(2)*/

UINT16 TG0_TX_DATA[8]={0x1000,0x1111,0x1222,0x1333,0x1444, 0x1555,0x1666,0x1777};
UINT16 TG0_RX_DATA[8]={0};

UINT16 TG1_TX_DATA[8]={0x2000,0x2111,0x2222,0x23333,0x2444, 0x2555,0x2666,0x2777};
UINT16 TG1_RX_DATA[8]={0};

UINT16 TG2_TX_DATA[8]={0x3000,0x3111,0x3222,0x3333,0x3444, 0x3555,0x3666,0x3777};
UINT16 TG2_RX_DATA[8]={0};

UINT16 tg3_TX_DATA[8]={0x4000,0x4111,0x4222,0x4333,0x4444, 0x4555,0x4666,0x4777};
UINT16 tg3_RX_data[8]={0};

UINT32_t tg3_is_complete;

/*用户代码结束*/

主无效(无效)

/*用户码开始(3)*/

   tg3_is_complete = 0x55555555;

   /*在 Cortex R4 CPU 中启用 IRQ 中断*/
   _enable_interrupt _();

   /*-正在初始化 mibspi -启用 TG 0,1,2,3,长度各为8字节
    * TG 0 -配置为 tick 触发器
    * TG 1,2,3由软件触发
    使用* CS 0。 - CS0处于保持模式,
    * CS 0仅在每个 TG (每8字节)完成后切换
    *触发器是一个触发信号,因此只有 TG 发射一次。
    *
   灭蚁灵();

   /*-启用环回(这是为了模拟数据传输而不使用外部线*/
   灭蚁灵环回(灭蚁灵 G1,Digital_LBK);


   /*将 TG 0,1,2,3完全中断启用到 INT 0 */
   mibspiEnableGroupNotification (mibspiREG1,0,0);
   mibspiEnableGroupNotification (mibspiREG1,1,0);
   mibspiEnableGroupNotification (mibspireG1,2,0);
   mibspiEnableGroupNotification (mibspiREG1,3,0);

   /*填写转接组*/
   mibspiSetData (mibspiREG1,0,TG0_TX_DATA);
   mibspiSetData (mibspiREG1,1,TG1_TX_DATA);
   mibspiSetData (mibspireG1,2,TG2_TX_DATA);
   mibspiSetData (mibspiREG1,3,tg3_TX_data);

   /*启用 TG0启动,一旦 tickCNT 触发*/
   mibspiTransfer (mibspireG1,0);

   /*配置 TICKCNT
    选择了数据格式0,SPICLK 设置为1000kHz
    *所以勾号是0xFFFF *(1/1000kHz)= 65.5535 msec*/
   mibspireG1->TICKCNT = 0x8000FFFF;

   /*等待 tg3 ISR */中设置此标志
   while (tg3_is_complete!= 0xA5A5A5A5);

   mibspiGetData (mibspireG1,0,TG0_RX_data);
   mibspiGetData (mibspiREG1,1,TG1_RX_data);
   mibspiGetData (mibspireG1,2,TG2_RX_data);
   mibspiGetData (mibspireg1,3,tg3_RX_data);

   While (1);


/*用户代码结束*/
}

/*用户码开始(4)*/

无效的 mibspiGroupNotification (mibspike_t *mibspi, UINT32组)

   交换机(组){
       案例0:
           /*启用 TG1启动,开关触发器*/
           灭蚁灵转移(灭蚁灵1,1);
           休息;
       案例1:
           /*启用 TG1启动,开关触发器*/
           灭蚁灵转移(灭蚁灵转移1,2);
           休息;
       案例2:
           /*启用 TG1启动,开关触发器*/
           灭蚁灵转移(灭蚁灵1,3);
           休息;
       案例3:
           /*启用 TG0启动,开关触发器*/
           //mibspiTransfer (mibspireG1,0);
           tg3_is_complete = 0xA5A5A5A5;
           休息;
       默认:
           While (1);
           休息;
   }
}

/*用户代码结束*/

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

    大家好,我们的专家已经离开办公室几天了。 请期待收到延迟的回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="470560 " url="~ë/support/icles/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1067351/tms570ls1224-mibspi-trigger-example-pro怀疑"] MIBSPI 传输如何触发嘀嗒信号计数触发器。[/quot]

    刻度计数器可用作 TG 的触发器。  首次通过设置 TIKNA 位启用刻度计数器时,计数器将首先预加载来自 TIKVALUE 寄存器的值。 计数器将开始向下计数,直到计数器下溢(计数器值变为零)。 每次打勾计数器检测到流量不足时,都会重新加载初始值并切换提供给 TG 的触发信号。  触发 TG 后,将传输属于它的缓冲区。

    [引用 userid="470560”url=~ë/support/icles/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1067351/tms570ls1224-mibspi-trigger-example-pro怀疑"] FFFF 的响应速度如何达到65.535 ms?

    你是对的。 它是 SPI 时钟的0xffff*period。 如果 SPI 时钟为1MHz,则内部触发器为65535us =65.535ms。

    [引用 userid="470560”url=~ë/support/icles/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1067351/tms570ls1224-mibspi-trigger-example-pro怀疑"]它如何进入 mibspGroupNotification 函数?

    mibspiGroupNotification()是 应用程序提供的回调函数。 这是转接完成后的呼叫。