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.

[参考译文] CCS/TMS320C5505:TMS320C5505-SPI、无时钟信号输出

Guru**** 2577385 points
Other Parts Discussed in Thread: TMS320C5505

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/630937/ccs-tms320c5505-tms320c5505-spi-no-clock-signe-out

器件型号:TMS320C5505

工具/软件:Code Composer Studio

尊敬的所有人

       我的 TMS320C5505 SPI 有问题。 我   使用带有 5505ezdsp bord 的例程运行仿真、但 失败了。 SPI_SIMO 和 SPI_CLOCK 都没有  信号。

       我使用 CS1 来收集 AD 的数据。  这里只是一个测试程序。

  谢谢。

#include 
#include 
#include 
#include 
#include 
#include 


#define CSL_TEST_FAILED (1)
#define CSL_TEST_PASSED (0)

#defineCSL_SPI_BUF_LEN(64)
#defineSPI_CLK_DIV(10000)
#defineSPI_FRAME_LENGTH(1)

UINT16 WriteBuff[CSL_SPI_BUF_LEN];
UINT16 SpiReadBuff[CSL_BUF_LEN];UINT16







= UINT16 = UST_STEP0;UINT16 SIMPLE 0 = UINT16

;U16 INSTEP_STEP_INSTEP_INSTEP_0;U16 = U16




/*uint16value = 0;
uint16pageNo = 0x0000;
uint16pollStatus;
uint16delay;
uint16fnCnt;*/

result = spi_init ();

if (CSL_SOK!=结果)
{
status = CSL_TEST_FAILED;
return (status);
}
else
{
printf ("SPI 实例初始化成功\n");
}

hSpi = SPI_open (SPI_CS_NUM_1、SPI_POLLING_MODE);

if (NULL = hSpi)
{
return (CSL_hw_SIT_CONFIG






= SPI_THSIN = SPI_CLUST_THIN = SPI_CLUST_THIN

);}if = SPI_CLUST_CLUST_THRELENGTHIN = SPI_CONFIG.CLK = SPI_CLUSTREN.CLUSTRIELD_SION_SION_SION_SION_SION_SION_TH_
hwConfig.frLen= SPI_FRAME_LENGTH;
hwconfig.wcEnable= SPI_WORD_IRQ_ENABLE;
hwconfig.fcEnable= SPI_FRAME_IRQ_DISABLE;
hwconfig.csNum= SPI_CS_NUM_1;
hwconfig.dataDelay= SPI_DATA_DLY_1;
hwconfig.csPol= SPI_CSP_ACTIVE_LOW;
hwconfig.clkPol= SPI_CLKP_LOW_AT_IDLE;
hwconfig.clkPh= SPI_CLK_PH_FALL_EDGE;

结果= SPI_CONFIG (hSpi、&hwconfig);

if (CSL_Sok!= Result)
{
return (CSL_test_failed);
}
else
{
printf ("SPI 实例已成功配置\n");
}

byteBuf[0]= 0xABCD;
for (looper = 0;Reader < 64;)
{loopBuff[0x001]+loopBuff[0xboobed];loopWriter[0x001]=0xloopBuff]

;loopWriter[loopBuff]


= 0x00bed[loopbed\<64;loopWriter]+ 0x00bed\+ 0x00boobed\<64;loopbed\<1 = 0x00p



return (status);
}



void main (void)
{
int16 status;

PLL_sample (); //μ s 时钟初始化
= SPI_SAMPLE ();
//spirom_init();




while (1)
{
delay_i = 5000;
while (delay_i---);

SPI_dataTransaction (hSpi、spiWriteBuff、CSL_SPI_BUF_LEN、SPI_WRITE);
}


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

    我已通知软件团队。 他们的反馈将在此处发布。

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

    我看不到 EBSR 寄存器初始化

    请参阅3.6.1外部总线选择寄存器(EBSR)和表3-4。 LCD 控制器、SPI、UART、I2S2、I2S3、 和 GP[31:27、20:18]引脚复用的引脚 复用。

    另请参阅 《C5505系统用户指南》中的1.7.3.1外部总线选择寄存器(EBSR)。

    SPI 信号可以来自两个引脚多路复用器选项中的一个。 在 C5505 eZdsp 上、SPI EEPROM 连接到引脚 LCD_D[0]/SPI_RX 和 LCD_D[1]/SPI_TX。 这些引脚通过 MODE1 (0b001)或 MODE6 (0b110)中的 EBSR PPMODE 位路由到 SPI 外设。

    使用此示例代码、它本应位于 spirom_init 例程内、并在代码中注释掉该例程。 EBSR 通过下面黄色突出显示的寄存器写入进行设置。

    我还建议您在写入寄存器之前对 SPI 外设执行外设复位(下面以绿色突出显示)

    void spirom_init()

    Int16 I;

    /*重置计数器值*/

    SYS_PRCNTR = 0x04;

    /*重置 SPI 模块*/

    SYS_PRCNTRLR = 0x00ff;

    for (i=0;i<100;i++){;}

    /*启用 SPICLK、RX、TX 和 CS0 */

    SYS_EXBUSSEL =(0x5<<12);

    //SPI 初始化

    SPI_SPICC2 = (0<15);//复位 SPI

      SPI_SPICC1 = 0x0031; // 2MHz 输入时钟

      SPI_SPIDC1 = 0x0000;

      SPI_SPICR2 &=~0x30F8; //启用 CS0

      SPI_SPICR2 |= 0x0038; //将字长设置为1字节

      SPI_SPICC2 = (1<<15);//启用 SPI

    while ((SPI_SPISR1 & 0x0001)!= 0){};//等待 SPI 就绪

    spirom_status_set (0xc3); //清除块保护

      返回;

    希望这对您有所帮助、
    标记