主题中讨论的其他器件: TM4C123GH6PM、 SW-TM4C
您好,
我正在尝试通过写入我自己的驱动程序来初始化 SSI 外设。 我正在使用 EK-TM4C123GXL 评估板。 使用的端口是 SSI0。 这些引脚映射到引脚- PA (5:2)。
代码如下所述-
- #include
- #include
- #define LED_RED 0x02
- #define LED_BLUE 0x04
- #define LED_GREEN 0x08
- void main (void){
- //初始化 SPI 总线//
- // PA (2:5)-
- // PA (2)- SSI0CLK
- // PA (3)- SSI0Fss
- // PA (4)- SSI0Rx
- // PA (5)- SSI0Tx
- int countTest = 0;
- //- SPI 初始化---//
- SSI0的// SPI 时钟//
- SYSCTL_RCGCSSI_R = 0;
- SYSCTL_RCGCSSI_R |= 1;
- // GPIO_A 时钟//
- SYSCTL_RCGCGPIO_R = 0;
- SYSCTL_RCGCGPIO_R |= 1;
- GPIO_Porta_PCTL_R = 0;
- GPIO_Porta_PCTL_R = 0x00222200;
- //GPIO_PORta_AFSEL_R = 0;
- //GPIO_PORta_AFSEL_R |= 0x3C;
- //GPIO_PORta_DEN_R = 0;
- //GPIO_PORta_DEN_R |= 0x3C;
- //禁用 SSI //
- //可能是检查是否设置了启用所需的 if-else //
- SSI0_CR1_R &= 0;
- // SSI 配置//
- SSI0_CR1_R |= 1; //-启用环回//
- SSI0_CPSR_R = 0x00000002;
- SSI0_CR0_R = 0x000009C7;
- SSI0_CR1_R |= 2;
- //
- //
- // SSI0_CC_R = 0; //- SSI 的 SYSCLK -//
- // SSI0_CPSR_R = 0;
- // SSI0_CPSR_R |= 0x02; //- CLK 预分频除数-//
- //
- // SSI0_CR0_R = 0;
- // SSI0_CR0_R |= 0x0707; //-串行时钟速率和8位---
- //
- // SSI0_CR1_R |= 2; //- SSI 外设启动-//
- //////////////////////////////////////////////
- //- SPI 初始化完成---//
- while (1){
- SSI0_DR_R = 0x0008;
- //GPIO_PORta_DATA_R |= 0x08;
- //GPIO_PORta_DATA_R &= 0xF7;
- for (countTest = 0;countTest <= 62000;countTest++);
- for (countTest = 0;countTest <= 62000;countTest++);
- for (countTest = 0;countTest <= 62000;countTest++);
- //GPIO_PORta_DATA_R |= 0x08;
- for (countTest = 0;countTest <= 62000;countTest++);
- for (countTest = 0;countTest <= 62000;countTest++);
- for (countTest = 0;countTest <= 62000;countTest++);
- }
没有错误、并且会进行编译。 但在任何 SPI 线路上都没有活动。 现在、FSS 引脚是 SS (从器件选择)。 那么、在 SSI 启用后、我是否应该实际切换 FSS 引脚? 数据锁存到 MOSI 引脚然后再传输是否需要执行此操作?