工具/软件:Code Composer Studio
先生我使用piccolo launchpad (TMS320F2.8027万F)进行SCI(UART)通信。 发射器部件工作正常。 但问题在于接收器部分。我正在将十六进制值从Raspberry PI发送到C2000 Rx引脚, 我在launchpad上没有得到任何值。
我在“indata”添加了监视点,以便查看收到的值。
计划:
#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/gPIC.h"
#include "F2802x_common/include/pie.h"
#include "F2802x_common/include/PLL.h"
#include "F2802x_common/include/sci.h"
#include "F2802x_common/include/wdog.h"
typedef无符号字符字节;
typedef uint8_t uint8;
typedef UINT32_t UINT32;
typedef uint16_t uint16;
typedef uint64_t uint64;
//本文件中找到的函数的prototype语句。
void scia_init(void);
void scia_fifo_init(void);
void scia_xmit (字节A);
void错误(void);
void scisend (字节A[],int长度);
void scireceive (uINT32 length,uint8 * data);
void scirs (字节数据);
//此示例中使用的全局计数
UINT16_t循环计数;
UINT16_t错误计数;
字节bBuf[10];
字节长度=10;
字节数据a1;
字节indata=0;
adc_handle myAdc;
clk_handle myClk;
FLASH_HANDLE myFlash;
GPIO _手柄myGpio;
PIE_HANDLE myPIE;
Sci_Handle mySci;
Void主(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));
mySci = SCI_INIT ((void *) SCIA_base_ADDR,sizeof(SCI_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编号_28,GPIO _上拉_启用);
GPIO设置上拉(myGpio,GPIO编号_29,GPIO _上拉_禁用);
GPIO_setQualification (myGpio,GPIO编号_28,GPIO _Qual_Async);
GPIO_setMode (myGpio,GPIO编号_28,GPIO _28_Mode_SCIRXDA);
GPIO设置模式(myGpio,GPIO编号_29,GPIO _29_Mode_SCITXDA);
同时(1)
{
while (SciaRegs.SCIRXST.bit.RXRDY!=0)
{
indata=SciaRegs.SCIRXBUF.ALL;
}
}
}
//步骤7。 在此处插入所有本地中断服务例程(ISR)和函数:
作废错误(void)
{
ErrorCount++;
ASM(" ESTOP0"); //取消注释以在此处停止测试
对于(;;){
}
}
void scia_init()
{
clk_enableSciaClock(myClk);
// 1停止位, 无回送
//无奇偶校验,8个字符位,
//异步模式,空闲线路协议
sci_disableParity (mySci);
Sci_setNumStopBits (mySci,SCI_NumStopBits_One);
Sci_setCharLength (mySci,SCI_CharLength_8_Bits);
//启用TX,RX,内部SCICLK,
//禁用RX ERR,睡眠,TXWAKE
sci_enableTx (mySci);
sci_enablerx (mySci);
sci_enableTxInt(mySci);
sci_enableRxInt(mySci);
sci_enableLoopBack (mySci);
Sci_setBaudRate (mySci,SCI_Baudrate_9_6_kBaud);
// SCI BRR = LSPCLK/(SCI BAUDIX8)-1
#IF (CPU_FRQ_50MHz)
Sci_setBaudRate (mySci,SCI_Baudrate_9_6_kBaud);
#Elif (CPU_FRQ_40MHz)
Sci_setBaudRate (mySci,(SCI_bauderate_e) 129);
#endif
Sci_enable (mySci);
返回;
}
//===========================================================================================================================================
//没有更多。
//===========================================================================================================================================