Tip / ログイン to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
lock attach
Attachments are accessible only for community members.
Translation_Bot
Community Manager
Community Manager
Community Manager
 

项目背景:

我遇到一个芯片要求SPI在IfxPort_PadDriver_cmosAutomotiveSpeed1模式下运行,但出现了读取的数据出错的问题,我怀疑是采样点的问题就去TC377的手册找怎样更改采样点,根据手册描述可以通过修改ECONz的ABC的值和比例来更改采样点

具体问题:

我根据我的理解A:(B+C)等于占空比但实际测试出来的结果却并不是,我想知道这是为什么,另外改变A+B+C的和的情况下还会改变SPI的时钟频率,我想知道这是为什么,是因为TQ在初始化的时候已经算出来了嘛?

 
0 件の賞賛
1 解決策
Translation_Bot
Community Manager
Community Manager
Community Manager

从图上看 A : B:C 设置成 2 0 2 是占空比50%

A : B : C 4 1 3 也是占空比50%

我使用函数自动计算的值是3 3 1

但函数IfxQspi_calculateExtendedConfigurationValue内部的注释提示到 A + 1 = (A + B + C ) /2

 

元の投稿で解決策を見る

0 件の賞賛
4 返答(返信)
Translation_Bot
Community Manager
Community Manager
Community Manager

可以先改变SPI 频率为100kHz,逐步增加,看是否和高频率有关联。

采样点的问题可以先使用原始代码的,之后再进行更改。ECON的设置可以参考这个函数IfxQspi_calculateExtendedConfigurationValue()

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager
 

您好我确定跟高频没有关系,完全是按照芯片手册进行设计的,今天也再仔细阅读了TC377的手册,A B C确实会影响波特率,更改A B C的比值之后问题得到了解决,但我还是对ABC的比例关系存在疑惑,按照我的理解IfxQspi_calculateExtendedConfigurationValue()函数会根据传入的波特率自动计算出A B C,我看了寄存器值计算后应该是1 2 0,这种情况不能用,当我改成1 0 2 的时候就可以用了,但是根据上面的图A:(B+C)不是应该为spi信号的高电平比低电平嘛,那1:2应该百分之三十的占空比,实际却是百分之五十,请问这是为什么?

 
0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

可以debug这个函数,看一下你的tQspi fBaud设置的是多少,然后就可以计算出A、B、C的值了。

uint32 IfxQspi_calculateExtendedConfigurationValue(Ifx_QSPI *qspi, const uint8 cs, const SpiIf_ChConfig *chConfig)
{
    IFX_UNUSED_PARAMETER(cs);

    Ifx_QSPI_ECON econ;
    econ.U = 0;

    const int     maxB   = 3;
    float32       tQspi  = 1.0f / IfxQspi_getTimeQuantaFrequency(qspi);
    float32       fBaud  = (chConfig->baudrate);
    int           abcMin = (2);
    int           abcMax = (4 + 0 + 4);
    int           q, bestQ = 1, abc, bestAbc = abcMax, halfBaud = 0;
    sint8         diffB  = 0;
    float32       error, bestError;
    float32       tTmp, tBaudTmp;
    boolean       done = FALSE;

 

 

0 件の賞賛
Translation_Bot
Community Manager
Community Manager
Community Manager

从图上看 A : B:C 设置成 2 0 2 是占空比50%

A : B : C 4 1 3 也是占空比50%

我使用函数自动计算的值是3 3 1

但函数IfxQspi_calculateExtendedConfigurationValue内部的注释提示到 A + 1 = (A + B + C ) /2

 

0 件の賞賛