主题:controlSUITE中讨论的其他部件
以下代码通过SPI正确读取寄存器。 芯片选择引脚在何处驱动低电平?
//#######################################################################
//$TI发布:F2802x支持库v230 $//
发布日期:星期五5月8日07:43:05 CDT 2015 $//
$版权:版权所有(C) 2008-2015 Texas2015 Texas Instruments Incorporated -//
http://www.ti.com/ 保留所有权利$//#########################################################################################
#include "DSP28x_Project.h" //设备标题文件和示例包括文件
#include "F2802x_common/include/adc.h"
#include "F2802x_common/include/clk.h"
#include "F2802x_common/include/flash.h"
#include "f2802x_common/include/gpio .h/spi"
#include "f280h/f280h/f280h/spdog"
的常见函数"include/f280_f2x_f2x_f280h/f280h/f"#include "f280h/f2x_common
//中断void ISRTimer2(void);
void delay_loop(void);
void SPI_xmit(uint16_t A);
void SPI_fifo_init(void);
void SPI_init(void);
void错误(void);
adc_handle myAdc;
clk_handle myClk;
flash_handle myFlash;
gpio_handle myGpio;
PIE_HANDLE myPIE;
SPI_HANDLE mySpi;
uint16_t sdata;//发送数据
uint16_t RDATA;//接收的数据
无效main (void)
{
cpu_handle myCpu;
PLL_HANDLE myPll;
WDOG_Handle myWDog;
//初始化此应用程序所需的所有句柄
myAdc = adc_init((void *)adc_base_addr, sizeof(ADC_Obj);
myClk = clk_init((void *)clk_base_addr, sizeof(clk_obj));
myCpu = CPU_INIT ((void *) NULL,sizeof (CPU_Obj));
myFlash = flash_init((void *)flash_base_addr, sizeof(flash_Obj));
myGpio = gPIO_INIT ((void *) gPIO_BASE ADDR,sizeof (gPIO_Obj));
myPie = PIE_INIT ((void *) PIE_base_ADDR,sizeof (PIE_Obj));
myPll = PLL_INIT ((void *) PLL_base_ADDR,sizeof (PLL_Obj));
mySpi = SPI_init((void *)SPIA_base_ADDR, sizeof(SPI_Obj);
myWDog = WDOG_INIT ((void *) WDOG_base_ADDR,sizeof (WDOG_Obj));
//执行基本系统初始化
WDOG_DISABLE (myWDog);
clk_enableAdcClock(myClk);
(*Device_cal)();
//选择内部振荡器1作为时钟源
CLK_setOscSrc (myClk,CLK_OscSrc_Internal);
//为x10 /2设置PLL,其输出频率为50MHz =10MHz *10/ 2
PLL_setup (myPll,PLL_Multiplier_10,PLL_DivideSelect_CLKIN_BY_2);
//禁用PIE和所有中断
PIE_DISABLE (myPie);
PIE_DisableAllInts(myPie);
CPU_disableGlobalInts (myCpu);
CPU_clearIntFlags (myCpu);
//如果从闪存运行,则复制RAM仅对RAM
#ifdef _flash起作用
memcpy (&RamfuncsRunStart,&RamfuncsLoadStart,(size_t)&RamfuncsLoadSize);
#endif
//初始化GPIO
GPIO设置上拉(myGpio,GPIO编号_16,GPIO _上拉_启用);
GPIO设置上拉(myGpio,GPIO编号_17,GPIO _上拉_启用);
GPIO设置上拉(myGpio,GPIO编号_18,GPIO _上拉_启用);
GPIO设置上拉(myGpio,GPIO编号_19,GPIO _上拉_启用);
GPIO_setQualification (myGpio,GPIO编号_16,GPIO _Qual_Async);
GPIO_setQualification (myGpio,GPIO编号_17,GPIO _Qual_Async);
GPIO_setQualification (myGpio,GPIO编号_18,GPIO _Qual_Async);
GPIO_setQualification (myGpio,gPIO_NUMBER_19,gPIO_Qual_Async);
GPIO_setMode (myGpio,GPIO编号_16,GPIO _16_Mode_SPISIMOA);
GPIO设置模式(myGpio,GPIO编号_17,GPIO _17_Mode_SPISOMIA);
GPIO设置模式(myGpio,GPIO编号_18,GPIO _18_Mode_SPICLKA);
GPIO设置模式(myGpio,GPIO编号_19,GPIO _19_Mode_SPISTEA_NOT);
//设置调试向量表并启用PIE
PIE_setDebugIntVectorTable(myPie);
PIE_ENABLE (myPie);
SPI_init(); //初始化SPI
SPI_fifo_init();//初始化SPI FIFO
sdata = 0x0100;
SPI_WRITE (mySpi,sdata);
//等待直到收到数据
while (SPI_getRxFifoStatus (mySpi)== SPI_FifoStatus_Empty)
{
}
RDATA = SPI_READ (mySpi);
SPI_WRITE (mySpi,sdata);
//等待直到收到数据
while (SPI_getRxFifoStatus (mySpi)== SPI_FifoStatus_Empty)
{
}
RDATA =(SPI_READ (mySpi)& 0xff);
while (1);
}
void error (void)
{
_ASM (" ESTOP0"); //测试失败!! 停止!
(;;)
{
}
}
作废SPI_init()
{
clk_enableSpiaClock(myClk);
//重置打开,上升边缘,16位字符位
SPI_setCharLength (mySpi, SPI_CharLength_16_Bits);
//启用主模式,正常相位,
//启用通话,SPI int禁用。
SPI_setMode (mySpi,SPI_Mode_Master);
SPI_setClkPhase (mySpi, SPI_ClkPhase_Delayed);
SPI_enableTx (mySpi);
SPI_setBaudRate(mySpi, 30);
//从重置中放弃SPI
//SPI_enableLoopBack (mySpi);
SPI_enable(mySpi);
//设置断点,使其不会干扰xmission
SPI_setPriority (mySpi,SPI_Priority_FreeRun);
return;
}
void spi_fifo_init()
{
//初始化SPI FIFO寄存器
SPI_enableChannels(mySpi);
SPI_enableFifoEnh (mySpi);
SPI_resetTxFifo(mySpi);
SPI_clearTxFifoInt(mySpi);
SPI_resetRxFifo(mySpi);
SPI_clearRxFifoInt(mySpi);
SPI_setRxFifoIntLevel (mySpi,SPI_FifoLevel,4_剑);
返回;}//============================================================================================
//没有更多。
//===========================================================================================================================================