一块TI的lm3s系列的arm单片机用ssi发送信息给另一块芯片,...

2019-07-15 21:08发布

一块ti的lm3s系列的ARM单片机用ssi发送信息给另一块芯片,为什么第一次不能发送0x00。红 {MOD}的那一句通不过。我用的是问w5200作为连接ethernet的芯片,不知道如下代码是否可以建立起mcu和w5200的联系。我用的是spi模式,代码如下:
//
#include "inc/lm3s8962.h"
#include "inc/hw_types.h"
#include "inc/hw_memmap.h"
#include "inc/hw_ssi.h"

#include "driverlib/sysctl.h" // 与系统配置有关
#include "driverlib/gpio.h" //与操作GPIO有关
#include "driverlib/ssi.h" //与操作SSI有关

volatile unsigned long ul_delay=0;

unsigned long ul_buf;
long num;

int main(void)
{

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);

unsigned char jtagp;

GPIOPinTypeGPIOInput(GPIO_PORTD_BASE,GPIO_PIN_7);

jtagp = GPIOPinRead(GPIO_PORTD_BASE,GPIO_PIN_7);

//jtagp = 0x01;

if(jtagp == 0x80 )
{
  return 0;
}



// 设置系统时钟
SysCtlClockSet(SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_8MHZ);

// 使能SSI1和GPIOD
SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE | SYSCTL_PERIPH_GPIOD);

// 配置PD.4输出
GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_4);
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_4,0X10);

// 配置SSI端口:SSI1CLK/SSI1FSS/SSI1RX/SSI1TX (8mA,弱上拉)
GPIOPinTypeSSI(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_3);

// 禁止SSI0接口
SSIDisable(SSI1_BASE);

// 配置SSI0: 主机模式,SSICLK=8MHz,Freescale SPI帧格
SSIConfigSetExpClk(SSI1_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_3,
SSI_MODE_MASTER, 115200, 8);

// 使能SSI0接口
SSIEnable(SSI1_BASE);

while(1)
{
// 发送address到发送FIFO
SSIDataPut(SSI1_BASE, 0x00);//这一句有问题
SSIDataPut(SSI1_BASE, 0x1f);
SSIDataPut(SSI1_BASE, 0x00);
SSIDataPut(SSI1_BASE, 0x01);

// 读接收FIFO到ul_buf
SSIDataGet(SSI1_BASE, &ul_buf);

// 判断ul_buf是否为0x03,是的话,LED闪烁一次
if(ul_buf==0x03)
{
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_4,
~GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_4));
}

// 延时
for(ul_delay=0; ul_delay<500000; ul_delay++);
}
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。