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.

[参考译文] LAUNCXL2-570LC43:支持DMA的MIBSPI:将8位MIBSPI值提取到8位数组

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1098545/launchxl2-570lc43-mibspi-with-dma-support-extract-8-bit-mibspi-values-to-8-bit-array

部件号:LAUNCXL2-570LC43
主题中讨论的其他部件:TMS570LC4357

您好,

客户正在 尝试配置 TMS570LC4357 Launchpad ,请参阅以下详细信息。

我 正在尝试配置 TMS570LC4357 LaunchPad Example_mibspiDMA.c,MIBSPI字符长度设置为8位,并使用DMA将接收到的数据传输到8位数组。 此示例在使用16位字符和示例代码时工作正常。 我不想将所需数据存储两倍,所以我只想将 来自mibspiRAM1的8 LSB数据存储到第二个阵列中。 这篇文章表明这是可能的: https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/87.0652万/rm57l843-mib-spi-with-dma-support ,但更改字节偏移不成功。 您能否为我提供有关如何实施此操作的更多信息? 我已附上我的最新尝试。

e2e.ti.com/.../example_5F00_mibspiDMA_5F00_test8bits.c

谢谢你。

此致,
5月

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

    您好,May,

    1.主从机的字符长度必须设定为相同的长度。 在项目中启用了回送,因此TX和RX的字符长度应该相同,可以是16位,也可以是8位。

    2.如果将16位数据写入TXRAM (CPU或通过DMA传输),且charlen=8,则只会将第一个字节传输到SPI总线或SPI从属设备。

      TXRAM->TXDATA[15:0]=0x1234,仅发送0x34  

    3.如果RX端的字符长度为8位,则RXed 8位数据将写入RXRAM的第一个字节

      RXRAM-->RXDATA [15:0]=0x0034

    4. 用于接收数据的DMA传输的RDSIZE和WRSIZE = ACCESS_8_bit, 0x34将传输到您的数据阵列

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

    QJ Wang,您好!

    请参阅客户提供的其他信息。

    "

    对于第一个点,CHARLEN设置为8位。 将8位值存储为16位类型是一种解决方法。

    在第二个/第三个点,第一个字节被视为LSB或MSB,因为系统内存是大字节序。 那么第一个字节是&(MibspiraM1->TX[0].data)还是它是&(MibspiraM1->TX[0].data)+1?

     

    因为,当我从TXDATA[1]传输0x01,然后从mibspiRAM1->TX[1].data时,它将打印为0x0100。

     

    使用此配置:

      G_dmaCTRLPKT1.Sadd     =(UINT32) TXDATA;    /*源地址            */

      G_dmaCTRLPKT1.DADD     =(UINT32)(&(mibspiRAM1->TX[0].data));    /*目标 地址      */

      G_dmaCTRLPKT1.CHCTRL   = 0;                 /*信道控制           */

      g_dmaCTRLPKT1.FRCNT    = 1;                /*帧数               */

      G_dmaCTRLPKT1.ELCNT    = D_SIZE;            /*元素计数             */

      g_dmaCTRLPKT1.ELDOFFSET  =4;/*                 元素目标偏移*/

      G_dmaCTRLPKT1.ELSOFFSET  = 0;                 /*元素源偏移*/

      g_dmaCTRLPKT1.FRDOFFSET  =0;/*                 帧目标偏移  */

      g_dmaCTRLPKT1.FRSOFFSET  =0;/*                 帧源偏移  */

      G_dmaCTRLPKT1.PORTAGN=   Porta_Read_PORTB_WRITE

      G_dmaCTRLPKT1.RDSIZE   =  ACCESS_8_BIT;     /*读取大小                 */

      g_dmaCTRLPKT1.WRSIZE   =  ACCESS_8_BIT;     /* WRITE SIZE                */

      G_dmaCTRLPKT1.tType    =  frame_transfer ;   /*传输类型             */

      G_dmaCTRLPKT1.ADDMORD  =  ADDR_INC1;         /*地址模式读取         */

      G_dmaCTRLPKT1.ADDMODEWR  =  ADDR_OFFSET;       /*地址模式WRITE        */

      G_dmaCTRLPKT1.AUTOINIT =  AUTOINIT_ON;       /*  autoinit                  *

     

    我得到:

    地址mibspiRAM1->TX[1].data: FF0E0006,值:100

    当TXDATA[1]的值为1时。

    "

    此致,
    5月

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="45.1819万" url="~/support/mspi-bdma-support-extract-group/arm-based微控制器/f/arm-based微控制器-forum/109.8545万/launchxl2-570lc43-mibspi-with -dma-support-extract-8-bit-mibspi-value-t-值转-8-8-8-8-8-8-bit-8-sbit-8sb/th1,因为它被认为是第一个或第三个存储器中的第三个存储器的千位数组。 所以第一个字节是&(mibspiRAM1->TX[0].data)还是&(mibspiRAM1->TX[0].data)+1?

    如果CHARLEN=8,则DMA TX传输的目标地址应为 &(MibspiRAM1->TX[0].data)+1

    [quote userid="45.1819万" url="~/support/pinspi-bdma-support-extract-group/arm-based pintracts/f/arm-based pinspicers-forum/109.8545万/launchxl2-570lc43-mibspi-with -dma-support-extract-8-bit-mibspi-extract-8-bit-mibspi-value-value-value-the-tax-8-8-8-bit-there[0x1401]x1301]01]x</s>1301

    如果目标地址是 &(mibspiraM1->TX[0].data),   则mibspiraM1->TX[1].data = 0x0100。

    如果目的地址为 &(MibspiraM1->TX[0].data)+1,   则mibspiraM1->TX[1].data = 0x0001。

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

    如果CHARLEN=8,则仅传输第一个字节。 例如,如果  mibspiRAM1->TX[1].data = 0x1234,则传输ox34,忽略0x12。