// SSI与DAC实验程序解析
//头文件
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/fpu.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/sysctl.h"
#include "driverlib/systick.h"
#include "utils/uartstdio.h"
#include "driverlib/ssi.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include <string.h>
int main(void)
{
//使能FPU
FPUEnable();
FPULazyStackingEnable();
//设置系统时钟为50MHz
ROM_SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHZ);
//使能用到的外设
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI1);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
// 设置PD0/1/2为SSI引脚,设置PG3为输出引脚,控制DAC芯片的CLR
ROM_GPIOPinTypeSSI(GPIO_PORTD_BASE, (GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_3));
ROM_GPIOPinTypeGPIOOutput(GPIO_PORTG_BASE,GPIO_PIN_3);
// 配置SSI接口
ROM_SSIDisable(SSI1_BASE);
ROM_SysCtlDelay(1000);
ROM_SSIConfigSetExpClk(SSI1_BASE, ROM_SysCtlClockGet(),
SSI_FRF_MOTO_MODE_1, SSI_MODE_MASTER,
4000000, 16);
ROM_SSIEnable(SSI1_BASE);
ROM_SysCtlDelay(1000);
// 拉高CLR,CLR为低时清除DAC寄存器
ROM_GPIOPinWrite(GPIO_PORTG_BASE,GPIO_PIN_3, GPIO_PIN_3);
ROM_SysCtlDelay(1000);
// SSI不忙时写入数据
while(ROM_SSIBusy(SSI1_BASE)) ;
ROM_SSIDataPut(SSI1_BASE, 0xc800);
while(1)
{
}
}