资源预览内容
第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
亲,该文档总共8页全部预览完了,如果喜欢就下载吧!
资源描述
/* brief:LDC1000应用程序* _ _* |PB4(SSI2CLK) - SCLK|* |PB5(SSI2FSS) - CSB |* |PB6(SSI2RX) SDI| LDC1000* |PA4(INT/GPIO) TBCLK|* _| |_*/#include #include #include driverlib/rom.h#include driverlib/adc.h#include driverlib/sysctl.h#include driverlib/pwm.h#include driverlib/timer.h#include driverlib/gpio.h#include driverlib/pin_map.h#include driverlib/interrupt.h#include driverlib/ssi.h#include inc/hw_ints.h#include inc/hw_memmap.h#include inc/hw_gpio.h#include LDC1000_cmd.h#include inc/hw_timer.h#include inc/hw_types.h#include inc/hw_ssi.h#ifndef TARGET_IS_BLIZZARD_RA1#define TARGET_IS_BLIZZARD_RA1#endif#ifndef PART_TM4C123GH6PM#define PART_TM4C123GH6PM#endif#define SPI_RWBIT 0x80 /LDC1000,SPI时序读写位,1=读,0=写unsigned long ProximityData; /LDC上Proximity Dataunsigned long FrequencyData; /LDC1000上的Frequency Datavolatile unsigned char DataRdy ; /LDC1000中断标志uint32_t DataRcv5 ; /存储SPI读取的数据/* brief: SPI写数据* param: unsigned int,SPIdata:待写的数据* return: none*/void SPIDataSend(unsigned int SPIdata)SSIDataPut(SSI2_BASE,SPIdata); /SPI发送(写)数据while(SSIBusy(SSI2_BASE) ; /等待SPI发送(写)完成/* brief: LDC1000初始化配置,ps:在SPI中配置了数据位16个数据长度,故* 在发送数据时可以将地址和值进行或运算一起发送出去* param: none* return: none*/void LDC1000_init()SPIDataSend(LDC1000_CMD_RPMAX TBCLK| LDC1000* _| |_*/void TimerInit() TimerDisable(TIMER2_BASE,TIMER_A);GPIOPinTypeTimer(GPIO_PORTB_BASE,GPIO_PIN_0);GPIOPinConfigure(GPIO_PB0_T2CCP0);/配置PB0为CCP模式HWREG(TIMER2_BASE + TIMER_O_CFG) = 0x04; /选择16-bit timer/配置TimerA周期计数(Periodic Timer mode)HWREG(TIMER2_BASE + TIMER_O_TAMR)|=(TIMER_TAMR_TAAMS|TIMER_TAMR_TAMR_PERIOD) ;/加载Timer计数值:40,并且设置Match值:20(Timer默认为减计数)HWREG(TIMER2_BASE + TIMER_O_TAMATCHR) = 20;TimerLoadSet(TIMER2_BASE,TIMER_A,40);TimerEnable(TIMER2_BASE,TIMER_A); /使能Timer/* brief: PA4初始化* param: none* return: none* _ _* | |* | |* Tiva M4 | PA4 SCLK|* |PB5(SSI2FSS) - CSB |* |PB6(SSI2RX) SDI| LDC1000* |PB0(Timer CLK) - TBCLK|* _| |_*/void SPIInit()/配置PB6为SSI2RX,即对Tiva M4而言的SPI数据接收线GPIOPinTypeSSI(GPIO_PORTB_BASE,GPIO_PIN_6) ;GPIOPinConfigure(GPIO_PB6_SSI2RX);/配置PB6为SSI2TX,即对Tiva M4而言的SPI数据发送线GPIOPinTypeSSI(GPIO_PORTB_BASE,GPIO_PIN_7) ;GPIOPinConfigure(GPIO_PB7_SSI2TX);/配置PB4为SSI2CLK线,作为时钟线GPIOPinTypeSSI(GPIO_PORTB_BASE,GPIO_PIN_4) ;GPIOPinConfigure(GPIO_PB4_SSI2CLK);/配置PB5为SSI2FFS线,作为片选线GPIOPinTypeSSI(GPIO_PORTB_BASE,GPIO_PIN_5) ;GPIOPinConfigure(GPIO_PB5_SSI2FSS);SSIDisable(SSI2_BASE); /禁能SSI2/配置SSI2为SSI_FRF_MOTO_MODE_0协议格式,SPI主模式,时钟源为5K,16位数据长度SSIConfigSetExpClk(SSI2_BASE,SysCtlClockGet(),SSI_FRF_MOTO_MODE_0,SSI_MODE_MASTER,5000,16);SSIEnable(SSI2_BASE) ; /使能SSI2/* brief: PA4中断服务函数,该函数在startup_ccs.c的中断向量表中进行* 了注册* param: none* return: none* _ _* | |* | |* Tiva M4 | PA4 - INTB| LDC1000* | |* | |_*/void GPIOAIntHandler()GPIOIntClear(GPIO_PORTA_BASE,GPIO_INT_PIN_4) ;/清除PA4中断标志DataRdy = 1 ;/LDC1000中断标志置位GPIOIntDisable(GPIO_PORTA_BASE,GPIO_INT_PIN_4) ;/禁能PA4中断,将在SPI数据读取完成后重新使能PA4中断/-main函数-int main(void)SysCtlClockSet(SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHZ | /配置主时钟为50MHzSYSCTL_OSC_MAIN);SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA) ;/使能GPIOA外设模块SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB) ;/使能GPIOB外设模块SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);/使能Timer2外设模块SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);/使能SSI2外设模块DataRdy = 0 ;/LDC1000中断标志清零TimerInit() ;/TBCLK所在时钟初始化GPIOInit() ;/GPIO初始化(PA4)SPIInit() ;/SPI初始化LDC1000_init();/LDC1000初始配置ROM_IntMasterEnable(); /使能总中断while(HWREG(SSI2_BASE + SSI_O_SR)& SSI_SR_RNE) /首先清除SPI上的接收缓存,排除干扰DataRcv0 = HWREG(SSI2_BASE + SSI_O_DR) ;while(1)/转化结束后读取ProximityData和FrequencyDa
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号