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.

[参考译文] TM4C1294NCPDT:SSI 单位和四位

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1442360/tm4c1294ncpdt-ssi-single-bit-and-quad-bit

器件型号:TM4C1294NCPDT

工具与软件:

晚上好、
我正在 TM4C1294上开发一个电路板项目、我正在使用 SSI 四路串行链路 SSI0。
我设法初始化 single-bit SPI 模式、但当我在 SSI0上切换到四路 SPI 模式时、无法激活发送到 AD9959 DDS 的信息。
但是、我在端口 A 的 SSI 引脚上拥有正确的信息。SDIO0、SDI01、SDIO2和 SDIO3上的两个时钟周期。 数据出现在 TM4C1294引脚上。 单一位 SPI 工作正常。
附加的是扩展的地图。
感谢您的答复 

//
//
// SPI 和 SSI0串行端口
//
//
void init_SPI0_mode_quad_bit (void)

//启用外设 SSI0
// IF 四路 SPI
//***** //
//***** //
//GPIO_PA4_SSI0XDAT0 <=位4位0只需2个 CLK 周期即可发送8位。
//GPIO_PA5_SSI0XDAT1 <=位5位1只需2个 CLK 周期即可发送8位。
//GPIO_PA6_SSI0XDAT2 <=位6位2只需2个 CLK 周期即可发送8位。
//GPIO_PA7_SSI0XDAT3 <=位7位3只需2个 CLK 周期即可发送8位。
//********** //

//***** //
//极性相位模式
// 0 0 SSI_FRF_MOTO_MODE_0
// 0 1 SSI_FRF_MOTO_MODE_1
// 1 0 SSI_FRF_MOTO_MODE_2
// 1 SSI_FRF_MOTO_MODE_3
//***** //

//********** //
// SSI1与以下 GPIO 管脚映射配合使用
// SSI0CLK:PA2.
// SSI0FSS:PA3.
// SSI0XDAT0:PA4
// SSI0XDAT1:PA5.
// SSI0XDAT2:PA6
// SSI0XDAT3:PA7
SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable (SYSCTL_PERIPH_SSI0);
//为端口 A2、A3、A4、A5、A6上的 SSI0功能配置引脚复用。 A7

GPIOPinConfigure (GPIO_PA2_SSI0CLK);
GPIOPinConfigure (GPIO_PA3_SSI0FSS);
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);
GPIOPinConfigure (GPIO_PA6_SSI0XDAT2);
GPIOPinConfigure (GPIO_PA7_SSI0XDAT3);

/*配置填充设置*/
GPIOPadConfigSet (GPIO_PORTA_BASE、GPIO_PIN_2|GPIO_PIN_3、GPIO_SIGNATURE_12mA、GPIO_PIN_TYPE_STD);
// GPIOPadConfigSet (GPIO_PORTA_BASE、GPIO_PIN_2、GPIO_STENCE_12mA、GPIO_PIN_TYPE_STD);
GPIOPadConfigSet (GPIO_PORTA_BASE、GPIO_PIN_4|GPIO_PIN_5、GPIO_SIGNATURE_12mA、GPIO_PIN_TYPE_STD);
GPIOPadConfigSet (GPIO_PORTA_BASE、GPIO_PIN_6|GPIO_PIN_7、GPIO_SIGNATURE_12mA、GPIO_PIN_TYPE_STD);
//配置 SSI 引脚的 GPIO 设置。 此函数还提供了
//将这些引脚控制到 SSI 硬件。
GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_7 | GPIO_PIN_6 | GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_3 | GPIO_PIN_2);
SSIConfigSetExpClk (SSI0_BASE、120000000、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、SSICLKDDS、 8);
//为两个 SSI0启用 Quad-SSI 模式。
SSIAdvModeSet (SSI0_BASE、SSI_ADV_MODE_QUAD_WRITE);
SSIClockSourceSet (SSI0_BASE、SSI_CLOCK_SYSTEM);
//在传输期间将 FSS 引脚保持为低电平。
//SSIAdvFrameHoldEnable (SSI0_BASE);
//SSIAdvModeSet (SSI0_BASE、SSI_ADV_MODE_WRITE);
//SSIAdvModeSet (SSI0_BASE、SSI_ADV_MODE_BI_WRITE);
//
//启用 SSI0模块。
//
SSI0_CR1_R = 0x00000080;
SSIEnable (SSI0_BASE);
}

void init_SPI0_mode_single_bit (void)

//启用外设 SSI0
// IF single-bit 串行模式 SPI
//***** //
// SSI0和以下 GPIO 管脚映射配合使用
// SSI1CLK:PA2 => SCLK
// SSI1FSS:PA3 =>同步
// SSI0XDAT0:PA4 => SSI0Tx
// SSI0XDAT1:PA5 => SSI0Rx
//********** //

//***** //
//极性相位模式
// 0 0 SSI_FRF_MOTO_MODE_0
// 0 1 SSI_FRF_MOTO_MODE_1
// 1 0 SSI_FRF_MOTO_MODE_2
// 1 SSI_FRF_MOTO_MODE_3
//***** //

SysCtlPeripheralEnable (SYSCTL_PERIPH_GPIOA);
SysCtlDelay (3);
SysCtlPeripheralEnable (SYSCTL_PERIPH_SSI0);
SysCtlDelay (3);


GPIOPinConfigure (GPIO_PA2_SSI0CLK);//(SCLK)
// GPIOPinConfigure (GPIO_PA3_SSI0FSS);//(SYNC)
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);//(SSI0Tx ->)
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);//(SSI0Rx)


//配置 SSI 引脚的 GPIO 设置。 该函数还将这些引脚的控制提供给 SSI 硬件。
// GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5);
GPIOPinTypeSSI (GPIO_PORTA_BASE、GPIO_PIN_2|GPIO_PIN_4|GPIO_PIN_5);
SSIConfigSetExpClk (SSI0_BASE、SYSCLKMICRO、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、SSICLKDDS、 8);// SSI_FRF_MOTO_MODE_0、2和3似乎工作正常。 对于 AD9852、SCLK 为10MHz 最大值
//在传输期间将 FSS 引脚保持为低电平。
SSIAdvFrameHoldEnable (SSI0_BASE);
//
//启用 SSI0模块。
//
SSI0_CR1_R = 0x00000000;
//SSIAdvModeSet (SSI0_BASE、SSI_ADV_MODE_READ_WRITE);
SSIEnable (SSI0_BASE);//启用 SSI
}
在主代码中...

//启用外设 SSI0-SSI1-SSI2两位 SPI
init_SPI0_mode_single_bit ();//数据发送到 SPI0端口@60Mbs
init_SPI1_mode_single_bit ();//数据发送到 SPI1端口@60Mbs
init_SPI2_mode_single_bit ();//将数据发送到 SPI2端口@60Mbs

SysCtlDelay (100);
PB0 = 0x01;//锁定开/关
SysCtlDelay (100);

ssi0PutData (csr_adress、0x10、csr_NUM_BYTE);//选择 CH0
ssi0PutData (FTW_ADRESS、0x51EB851、FTW_NUM_BYTE);

SysCtlDelay (100);
ssi0PutData (csr_adress、0x20、csr_NUM_BYTE);//选择 ch1
ssi0PutData (FTW_ADRESS、0x51EB851、FTW_NUM_BYTE);

SysCtlDelay (100);
ssi0PutData (csr_adress、0x40、csr_NUM_BYTE);//选择 ch2
ssi0PutData (FTW_ADRESS、0x51EB851、FTW_NUM_BYTE);

SysCtlDelay (100);
ssi0PutData (csr_adress、0x80、csr_NUM_BYTE);//选择 ch3
ssi0PutData (FTW_ADRESS、0x51EB851、FTW_NUM_BYTE);

SysCtlDelay (1000);
PK7 = 0x80;// AD9959 I/O 更新 DDS0
SysCtlDelay (10);
PK7 = 0x00;

init_SPI0_mode_quad_bit ();//四通道 SPI DDS0
...


  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="142790" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1442360/tm4c1294ncpdt-ssi-single-bit-and-quad-bit ]]我有关于端口 A 的 SSI 引脚的正确信息。SDIO0、SDI01、SDIO2及 SDIO3上有两个时钟节拍。 数据出现在 TM4C1294引脚上。 单一位 SPI 工作正常。 附加是展开的地图

    如果您在 SSI 引脚上看到正确的信号、则 MCU 能够按预期工作。 我建议您检查 AD9959侧、以了解它无法识别来自 MCU 的命令/数据的原因。  请注意、AD9959是第三方 IC、我对此没有任何经验。  可以使用逻辑分析仪或示波器来诊断问题。  

    读取 AD9959 d/s 时、需要将11b 写入 CSR 寄存器位字段2:1才能更改为4位串行模式。 你这么做了吗?

    数据表中还有一条说明如下的注释。  

    请注意、当在4位串行模式下对器件进行编程时、必须将 SDIO_3引脚保持在逻辑0、直到器件被编程出单位串行模式。 否则可能会导致串行 I/O 端口控制器不按顺序运行

    一旦切换到4位串行模式、就需要确保 SSI 模块按照数据表中显示的时序图输出位序列。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [quote userid="142790" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1442360/tm4c1294ncpdt-ssi-single-bit-and-quad-bit nit_SPI0_mode_single_bit (void)[/quot]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好
    我想我理解了我的错误。
    最初您必须将自己置于 single-bit 模式(init_SPI0_mode_single_bit ())、并且可能必须加载 csr[2:1]= 11b 寄存器 一位模式 以在四位模式下选择4个 DDS 通道。
    然后您必须验证(更新 dds)、然后选择四位模式 INIT_SPI0_MODE_QUAD_BIT ()。
    I CONTROL 3 DDS AD9959、并在四位模式下使用 SSI0、SSI1和 SSI2。

    我将在下周早些时候进行测试。
    感谢您的反馈
    和谐地
    Wiotte Fabrice 法国 CNRS

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它现在在四路 SPI 中以10MHz 时钟@60MHz 时钟工作。 
    再次感谢您的反馈



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

    您好!

     很高兴您解决了该问题。  

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

    此处是 DDS 字频率变化的示波器视图。

x 出现错误。请重试或与管理员联系。