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.

tms570ls0914 通过spi配置从芯片的配置问题

Other Parts Discussed in Thread: TMS570LS0914

大家好,我最近在用tms570ls0914这款芯片来配置从芯片,使从芯片实现电磁阀的开关控制,但是在配置中出现了一些问题,想请教一下大家。

1、配置好spi后spi通信是可以的,四个脚都有信号,但是so脚的信号第一位是1(意思就是在上一次spi传输中发生了错误)下面的图6.21.7是数据帧的格式。我现在不太清楚那里发生了错误。

2、再仔细阅读从芯片数据手册后,发现可能是crc校验码错误的问题,下面的图6.21.6是crc校验码的计算方式,我理解的这款芯片crc校验码的多项式是2F,(比如说前24位数据是B91FFF,那么crc校验码就是F6,)不知道我这种理解算不算正确

3、spi通信不能达到应有的硬件控制效果,连最基础的关闭看门狗都不能做到,想请教一下各位这种情况怎么处理

  • CRC模块可用于计算接收数据流上的CRC,前提是该数据的CRC已知或者使用与CRC模块使用的相同多项式计算并与数据一起发送。

    根据数据大小的不同,因为CRC模块将子64位写入视为带有前导0的64位值。例如,如果字节写入发生在地址0xFE000063(CRCSIGREGL1寄存器),则寄存器CRCSIGREGH1和CRCSIGREGL1中的3个剩余字节将被视为0。

    同样在下面的示例中,结果被读取为对长long变量的64位访问。然而,由于CRC寄存器的存储器布置,最低有效字存储在较低地址处,从而使大端格式失效。基本上两个寄存器都必须在代码中颠倒过来。

    #define CRC_CTRL0         *(volatile unsigned int *)0xFE000000
    #define CRC_CTRL2         *(volatile unsigned int *)0xFE000010
    #define CRC_STATUS         *(volatile unsigned int *)0xFE000028
    #define CRC_SIGREGL1    *(volatile unsigned int *)0xFE000060
    #define CRC_SIGREGH1    *(volatile unsigned int *)0xFE000064
    #define CRC_SIGREG        *(volatile unsigned long long *)0xFE000060
    #define CRC_REGL1        *(volatile unsigned int *)0xFE000068
    #define CRC_REGH1        *(volatile unsigned int *)0xFE00006C
    
    const char endzero_array[10] = {0x01, 0x55, 0xFF, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x00};
    
    void main(void)
    {
    /* USER CODE BEGIN (3) */
        unsigned char count;
        unsigned long long result = 0;
        
        CRC_CTRL0 |= 0x00000001;        // reset CRC module
        CRC_CTRL0 &= 0xFFFFFFFE;
        CRC_CTRL2 |= 0x00000003;        // configure full CPU mode
        
        for(count = 0; count<10; count++)
        {
            CRC_SIGREGL1 = endzero_array[count];    
        }
        
        result = CRC_SIGREG;
    }

  • 另外我这边暂时没有这个板子,所以无法测试。建议您去e2e.ti.com/.../312 咨询下国外的工程师