主题中讨论的其他器件: TM4C123、 ENERGIA
工具/软件:TI C/C++编译器
我尝试通过 SPI 将数字电位计 MCP4131与 Tiva TM4C123GXL LaunchPad 连接。 一个 LED 连接到 MCP4131的输出。 参考数据表和视频使用 Keil uvision5编写、编译和编程代码。 使用 DSO 进行检查时、SPI 引脚未提供任何信号。 代码如下所示。 请找出错误并设计解决方案。
#include 
#include 
#include "TM4C123GH6PM.h" 
void SPI_MASTER_ini (void){ 
sysctl->RCGCSSI|=(1<<2);  
sysctl->RCGC2|=(1<1);  
GPIOB->AFSEL|=(1<<4)|(1<<6)|(1<<7); 
GPIOB->AFSEL&=~(1<<5); 
GPIOB->PCTL|=(2<<16)|(2<<20)|(2<<24)|(2<<28); 
GPIOB->DEN|=(1<<4)|(1<<5)|(1<<6)|(1<<7); 
GPIOB->DIR|=(1<<5); 
GPIOB->PUR|=(1<<4)|(1<<5)|(1<<6)|(1<7); 
SSI2->CR1&=(1<1); 
SSI2->CR1=0x00000000;  
SSI2->CC=0x00;  
SSI2->CPSR=8;  
SSI2->CR0=(0x7<0);  
SSI2->CR1|=(1<<1);  
} 
void SPI_write (uint8_t data){ 
SSI2->DR=数据;  
while ((SSI2->SR&(1<0)=0);  
} 
int main(){ 
SystemInit(); 
SPI_MASTER_ini (); 
GPIOB->DATA|=(1<<5); 
GPIOB->DATA&=~(1<<5); 
SPI_WRITE (0x00); 
for (int j=0;j<128;j++) 
SPI_WRITE (j); 
for (int i=0;i<15;i++) 
GPIOB->DATA|=(1<<5); 
while (1) 
{ 
GPIOB->DATA&=~(1<<5); 
SPI_WRITE (0x00);//发送字符串 
for (int j=0;j<128;j++) 
SPI_WRITE (j); 
for (int i=0;i<15;i++) 
GPIOB->DATA|=(1<<5); 
} 
返回(0); 
}