主题中讨论的其他器件: 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);
}