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.

[参考译文] EK-TM4C123GXL:SSI 初始化

Guru**** 2454880 points
Other Parts Discussed in Thread: EK-TM4C123GXL, SW-TM4C

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/635680/ek-tm4c123gxl-ssi-initialisation

器件型号:EK-TM4C123GXL
主题中讨论的其他器件: TM4C123GH6PMSW-TM4C

您好,

我正在尝试通过写入我自己的驱动程序来初始化 SSI 外设。 我正在使用 EK-TM4C123GXL 评估板。 使用的端口是 SSI0。 这些引脚映射到引脚- PA (5:2)。

代码如下所述-

  1. #include
  2.    #include
  3.    
  4.    #define LED_RED 0x02
  5.    #define LED_BLUE 0x04
  6.    #define LED_GREEN 0x08
  7.    void main (void){
  8.    
  9.       //初始化 SPI 总线//
  10.       // PA (2:5)-
  11.       // PA (2)- SSI0CLK
  12.       // PA (3)- SSI0Fss
  13.       // PA (4)- SSI0Rx
  14.       // PA (5)- SSI0Tx
  15.         
  16.       
  17.       int countTest = 0;
  18.       
  19.       //- SPI 初始化---//
  20.       
  21.       SSI0的// SPI 时钟//
  22.       
  23.       SYSCTL_RCGCSSI_R = 0;
  24.       SYSCTL_RCGCSSI_R |= 1;
  25.       
  26.       // GPIO_A 时钟//
  27.       SYSCTL_RCGCGPIO_R = 0;
  28.       SYSCTL_RCGCGPIO_R |= 1;
  29.       
  30.       GPIO_Porta_PCTL_R = 0;
  31.       GPIO_Porta_PCTL_R = 0x00222200;
  32.       
  33.       //GPIO_PORta_AFSEL_R = 0;    
  34.       //GPIO_PORta_AFSEL_R |= 0x3C;
  35.       
  36.       //GPIO_PORta_DEN_R  = 0;
  37.       //GPIO_PORta_DEN_R  |= 0x3C;
  38.       
  39.       //禁用 SSI //
  40.       //可能是检查是否设置了启用所需的 if-else //
  41.       SSI0_CR1_R &= 0;
  42.       
  43.       // SSI 配置//
  44.       
  45.       SSI0_CR1_R |= 1;      //-启用环回//
  46.       SSI0_CPSR_R = 0x00000002;
  47.       SSI0_CR0_R = 0x000009C7;
  48.       SSI0_CR1_R |= 2;
  49.       
  50. //       
  51. //       
  52. //      SSI0_CC_R  = 0;      //- SSI 的 SYSCLK -//
  53. //      SSI0_CPSR_R = 0;
  54. //      SSI0_CPSR_R |= 0x02;   //- CLK 预分频除数-//
  55. //       
  56. //      SSI0_CR0_R = 0;
  57. //      SSI0_CR0_R |= 0x0707;   //-串行时钟速率和8位---
  58. //                               
  59. //      SSI0_CR1_R |= 2;        //- SSI 外设启动-//
  60.       
  61.       //////////////////////////////////////////////
  62.       
  63.       //- SPI 初始化完成---//
  64.       
  65.       while (1){
  66.          SSI0_DR_R = 0x0008;
  67.          //GPIO_PORta_DATA_R |= 0x08;
  68.          //GPIO_PORta_DATA_R &= 0xF7;
  69.          for (countTest = 0;countTest <= 62000;countTest++);
  70.          for (countTest = 0;countTest <= 62000;countTest++);
  71.          for (countTest = 0;countTest <= 62000;countTest++);
  72.          //GPIO_PORta_DATA_R |= 0x08;
  73.          for (countTest = 0;countTest <= 62000;countTest++);
  74.          for (countTest = 0;countTest <= 62000;countTest++);
  75.          for (countTest = 0;countTest <= 62000;countTest++);
  76.          
  77.       }
  78.          

没有错误、并且会进行编译。 但在任何 SPI 线路上都没有活动。 现在、FSS 引脚是 SS (从器件选择)。 那么、在 SSI 启用后、我是否应该实际切换 FSS 引脚? 数据锁存到 MOSI 引脚然后再传输是否需要执行此操作?

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

    [引用 user="Vinod karuvat3"]我正在尝试通过编写我自己的驱动程序来初始化 SSI 外设。[/quot]

    最常发生的情况是、这种(不合理的)"写自己的"尝试失败了、就像您在这里所做的那样。   

    由于此类代码样式需要额外的时间/工作量以及随时可用的"long tested、True、详尽的用户测试和扩展 API"、供应商(Long)已在"最全面"此类"DRM 或 ASM"代码的读取/审阅/分析中声明其"不感兴趣"。   在供应商支持下(不太可能)-您只能由"外部人员"来帮助-当(零解释/理由)希望"写自己"出现在此类帖子中时、几乎没有(即没有)协助的动机(零解释/理由)。   (我们不希望"做家庭作业或做他人的工作任务"-应该证明这种情况。)

    如果"绑定并确定"到(仅限于)编写您自己的文件(而不是从"干净的工作表"开始)、那么使用供应商的 API 示例是否会非常有帮助、然后"单步执行代码-注意:正在播放的姐妹、关键位选择/设置以及代码的排序?"   拥有此类数据的武装-您是否会有如此多的"更好的武装"来"写您自己的(几乎)"-但这次-会有更大的"成功的可能性?"

    必须指出的是,存在这种 API 是有充分理由的。    与此形成鲜明对比的是、那些速度大幅慢、工作量大得多、未经测试/有疑问的"写自己的"-"不是太多!"

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

    我们已经编写了完整的 SSI 驱动程序、这些驱动程序已经过全面测试、并在 TivaWare 软件包中为您处理所有这些驱动程序。 请在您的应用中利用这些功能。 此外、还提供了一些示例、可帮助您快速运行。

    TivaWare 的下载链接:www.ti.com/tool/sw-tm4c

    如 CB1所述、当我们在 TivaWare 中投入的时间/精力使您能够实现相同的目标时、我们不会支持使用寄存器级调用的定制驱动程序。 我希望您能充分利用我们为所有客户付出的时间和工作来创造这些驱动因素、而不是尝试重新发明车轮。