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.

[参考译文] TMS570LC4357:TMS570LC43X

Guru**** 2450280 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/1167684/tms570lc4357-tms570lc43x

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

大家好、我使用的是 TMS570LC43X 评估板(主器件)我想使用 SPI (SPI3)与(从器件) ARINC HOLT 板(hi-3593)进行通信我无法从从器件读取日期请帮助我排除任何参考示例、如果您在 TMS570中是好的初始方。

void spiInit (void)

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


/**@b 初始化@b SPI3 */

/**使 SPI 退出复位*/
spiREG3->GCR0 = 0U;
spiREG3->GCR0 = 1U;

/** SPI3主控模式和时钟配置*/
spiREG3->GCR1 =(spiREG3->GCR1 & 0xFFFFFFFCU)|((uint32)((uint32) 1U << 1U)/* CLOKMOD */
| 1U);/*主设备*/

/** SPI3使能引脚配置*/
spiREG3->INT0 =(spiREG3->INT0 & 0xFEFFFFFFU)|(uint32)((uint32) 0U << 24U);//启用 HICHZ */

/**-延迟*/
spiREG3->delay =(uint32)((uint32) 255U <<24U)/* C2TDELAY */
|(uint32)((uint32) 255U << 16U)// T2CDELAY *
|(UINT32)((UINT32) 0U <<8U)/* T2EDELAY */
|(uint32)((uint32) 0U << 0U);// C2EDELAY *

/**-数据格式0 */
spiREG3->FMT0 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 8U << 0U);/*数据字长度*/

/**-数据格式1 */
spiREG3->FMT1 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/

/**-数据格式2 */
spiREG3->FMT2 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/

/**-数据格式3 */
spiREG3->FMT3 =(uint32)((uint32) 0U <<24U)// wdelay
|(uint32)((uint32) 0U << 23U)/*奇偶校验极性*/
|(uint32)((uint32) 0U << 22U)/*奇偶校验使能*/
|(uint32)((uint32) 0U << 21U)//等待启用
|(uint32)((uint32) 0U << 20U)/*移位方向*/
|(uint32)((uint32) 0U << 17U)/*时钟极性*/
|(uint32)((uint32) 0U << 16U)/*时钟相位*/
|(uint32)((uint32) 74U << 8U)/*波特率预分频*
|(uint32)((uint32) 16U << 0U);/*数据字长度*/

/**-设置中断级别*/
spiREG3->LVL =(uint32)((uint32) 0U <<9U)/* TXINT */
|(UINT32)((UINT32) 0U <<8U)/* RXINT */
|(UINT32)((UINT32) 0U << 6U)/* OVRNINT */
|(uint32)((uint32) 0U << 4U)/* BIERR */
|(uint32)((uint32) 0U << 3U)/* DESYNC */
|(uint32)((uint32) 0U << 2U)/* PARERR */
|(uint32)((uint32) 0U << 1U)/*超时*/
|(UINT32)((UINT32) 0U << 0U);/* DLENERR */

/**-清除所有挂起的中断*/
spiREG3->FLG |= 0xFFFFFFU;

/**-启用中断*/
spiREG3->INT0 =(spiREG3->INT0 & 0xFFFFFF0000U)
|(UINT32)((UINT32) 0U <<9U)/* TXINT */
|(UINT32)((UINT32) 0U <<8U)/* RXINT */
|(UINT32)((UINT32) 0U << 6U)/* OVRNINT */
|(uint32)((uint32) 0U << 4U)/* BIERR */
|(uint32)((uint32) 0U << 3U)/* DESYNC */
|(uint32)((uint32) 0U << 2U)/* PARERR */
|(uint32)((uint32) 0U << 1U)/*超时*/
|(UINT32)((UINT32) 0U << 0U);/* DLENERR */

/**@b 初始化@b SPI3 @b 端口*/

/**- SPI3端口输出值*/
spiREG3->PC3 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *

/**- SPI3端口方向*/
spiREG3->PC1 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *

/**- SPI3端口开漏使能*/
spiREG3->PC6 =(uint32)((uint32) 0U <<0U)/* scs[0]*/
|(uint32)((uint32) 0U << 1U)/* scs[1]*/
|(uint32)((uint32) 0U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 0U << 3U)/* SCS[3]*/
|(uint32)((uint32) 0U << 4U)/* scs[4]*/
|(uint32)((uint32) 0U << 5U)/* scs[5]*
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *

/**- SPI3端口上拉/下拉选择*/
spiREG3->PC8 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(uint32)((uint32) 1U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 1U <<11U);/* SOMI */

/**- SPI3端口上拉/下拉使能*/
spiREG3->PC7 =(uint32)((uint32) 0U <<0U)/* scs[0]*/
|(uint32)((uint32) 0U << 1U)/* scs[1]*/
|(uint32)((uint32) 0U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 0U << 3U)/* SCS[3]*/
|(uint32)((uint32) 0U << 4U)/* scs[4]*/
|(uint32)((uint32) 0U << 5U)/* scs[5]*
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(UINT32)((UINT32) 0U <<9U)/* CLK */
|(uint32)((uint32) 0U <<10U)/* SIMO */
|(uint32)((uint32) 0U << 11U);/* SOMI *

/* SPI3将所有引脚设置为功能*/
spiREG3->PC0 =(uint32)((uint32) 1U <<0U)/* SCS[0]*/
|(uint32)((uint32) 1U << 1U)/* scs[1]*/
|(uint32)((uint32) 1U << 2U)/* scs[2]*/
|(UINT32)((UINT32) 1U << 3U)/* SCS[3]*/
|(uint32)((uint32) 1U << 4U)/* scs[4]*/
|(uint32)((uint32) 1U <<5U)/* SCS[5]*/
|(UINT32)((UINT32) 0U <<8U)/* ENA */
|(uint32)((uint32) 1U <<9U)/* CLK */
|(uint32)((uint32) 1U <<10U)/* SIMO */
|(uint32)((uint32) 1U <<11U);/* SOMI */

/**-初始化 TX 和 RX 数据缓冲区状态*/
G_spiPacket_t[2U].TX_DATA_STATUS = SPI_READY;
G_spiPacket_t[2U].Rx_DATA_STATUS = SPI_READY;

/**-最后启动 SPI3 */
spiREG3->GCR1 =(spiREG3->GCR1 & 0xFEFFFFFFU)| 0x01000000U;


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

/********* 主要方案 /

U16 TX_Data_Master[8]={0x04、0x00、0x00、0x00、0x00、 0x00、0x00、0x00};
U16 TX_Data_Master1[8]={0x08、0x03、0x00、0x70、0x00、 0x00、0x00、0x00};
U16 TX_Data_Master2[8]={0x80、0x00、0x00、0x00、0x00、0x00、 0x00、0x00、0x00};

U16 RX_Data_Master[8]={0};

spiDAT1_t 数据通信 fig1_t;


dataconfig1_t.CS_hold = true;
dataconfig1_t.WDEL = false;
dataconfig1_t.DFSEL = SPI_FMT_0;
dataconfig1_t.CSNR = 0xFB;


spiInit();


//重置动态
// spiTransmitData (spiREG1,&dataconfig1_t,1,TX_Data_Master);


//[TCR]<= 0x03

TransmitData (spiREG3、&dataconfig1_t、2、TX_Data_Master1);


TransmitAndReceiveData (spiREG3、&dataconfig1_t、2、TX_Data_Master2、RX_Data_Master);


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

    您好、TI、

    请帮助处理请求。

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

    您好 Srinivasa、

    SPI 上没有直接示例、但 HALCoGen 的帮助部分中有一个 MibSPI 上的回路示例

    如果需要、您可以参考该信息。

    关于您的代码、您是否有机会探测 MOSI 线路、您是否在该线路上看到过任何数据?

    您能否附加整个项目以便在我们这边轻松进行调试? 尝试压缩 整个项目并进行共享。

    --

    谢谢、此致、

    Jagadish。

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

    在这里无法发送 zip 文件 SIR、我使用 CRO 探测 MOSI 线路、但未获取任何数据  

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

     此处没有附加 zip 文件的选项

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

    您好 Srinivasa、

    单击"插入"、然后单击"图像/视频/文件"选项

    现在单击上传选项  

    单击上传选项后、您可以路由到 zip 文件路径并附加它。

    --

    谢谢、此致、

    Jagadish。

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

    e2e.ti.com/.../SPI_5F00_UPDATE.zipplschk 先生

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

    您好 Srinivasa、

    我在您的代码中找到了一个拼写错误、更正了该拼写错误后、代码工作正常  

    这里应该是 spiREG3、但您错误地给出了 spiREG1、我更正了那个  

    此外、我在主循环末尾添加了一个 while (1)  

    现在您的代码运行正常、我可以看到如下所示的正确数据

    如果需要、您可以采用以下修改后的代码:
    e2e.ti.com/.../SPI_5F00_UPDATE_5F00_New.zip

    注意:为了进行测试、我将第一次传输更改为8个字节而不是1个字节、您可以将其改回1。

    --

    谢谢、此致、

    Jagadish。

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

    使用 CRO 进行 IAM 探测、但我无法获取数据、如 您 请告诉我如何使用 CRO 进行测量。

    谢谢、此致  

    Srinivasa k

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

    谢谢、我的主设备无法从 ARINC 从设备读取数据

    谢谢、此致  

    Srinivasa k

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

    您好 Srinivasa、

    [引用 userid="542806" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167684/tms570lc4357-tms570lc43x/4393101 #4393101">使用 CRO 进行探测、但我无法获取数据、如 您 请告诉我如何使用 CRO 进行测量。

    1.请确保根据您的配置探测正确的信号

      V8 ->  MISO
      V9 ->  CLK
      V10 -> CS0
      W8 -> MOSI

    请记住、我们不是连续发送数据、而是在复位后仅发送一次数据。 因此、在连接 CRO 后尝试重置电路板。

    [引用 userid="542806" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1167684/tms570lc4357-tms570lc43x/4393111 #4393111"]感谢您,我的主控方无法从 ARINC 从属方读取数据

    我没有浏览从器件数据表、因此请确保您以正确的顺序发送正确的字节。

    --
    谢谢、此致、
    Jagadish。

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

    e2e.ti.com/.../3593_5F00_F.pdf 

    这是我的从器件数据表、请帮助我、我正在发送 cmd reset (OX04)、TCR (0x08)和读取状态 CMD (0X84)、但没有从器件获得任何响应  

    谢谢、此致

    Srinivasa K