This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用F2812的SCIB作为串口运行,外面接的是485的差分输入,进过示波器的实际测量,发现数据已经到DSP SCIB的接收引脚,但就是无法接收到数据。但可以发送。
#include "DSP281x_Device.h"
#include "DSP281x_Examples.h"
void scib_loopback_init(void); void scib_fifo_init(void);
void scib_xmit(int a); //void error(int);
Uint16 LoopCount;
Uint16 ErrorCount;
void main(void)
{
Uint16 SendChar;
Uint16 ReceivedChar;
InitSysCtrl();
InitGpio();
EALLOW;
GpioMuxRegs.GPFMUX.all=0x0030; // Select GPIOs to be Sci pins
EDIS;
// Disable and clear all CPU interrupts:
DINT;
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
LoopCount = 0;
ErrorCount = 0;
scib_fifo_init(); // Initialize the SCI FIFO
scib_loopback_init(); // Initalize SCI for digital loop back
SendChar = 0;
EALLOW;
GpioMuxRegs.GPFMUX.bit.CANTXA_GPIOF6 = 0;
GpioMuxRegs.GPFDIR.bit.GPIOF6 = 1; //设置为输出
EDIS;
//用来使用485的接收功能 1为发送,0接收
GpioDataRegs.GPFDAT.bit.GPIOF6 = 0;
{
scib_xmit(SendChar);
while(ScibRegs.SCIFFRX.bit.RXFIFST !=1) { } // wait for XRDY =1 for empty state
ReceivedChar = ScibRegs.SCIRXBUF.all;
SendChar++;
SendChar &= 0x00FF;
}
void scib_loopback_init()
{
ScibRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScibRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.all =0x0003;
ScibRegs.SCICTL2.bit.TXINTENA =1;
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
ScibRegs.SCIHBAUD =0x0000;
ScibRegs.SCILBAUD =0x0079;
ScibRegs.SCICCR.bit.LOOPBKENA =0; // Enable loop back
ScibRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
void scib_xmit(int a)
{
ScibRegs.SCITXBUF=a;
}
void scib_fifo_init()
{
ScibRegs.SCIFFTX.all=0xE040;
ScibRegs.SCIFFRX.all=0x204f;
ScibRegs.SCIFFCT.all=0x0;
}
您好 你使用的FIFO接收 设置为几个字节触发 ?
你可以通过在线断点的方法测试 上位机一直下发 如果能进入中断
就说明只是设置和发送的字节数不一致而已
附件是我使用过的代码 你可以参考参考一下
你好,这个方法我有试过,但还是不行。因为我发现RXBuff寄存器没有数据进入,也就是说数据从未被接收到。从我粘贴在上面的代码可以看到,只要有一个字节的数据,SCI接收FIFO就可以触发了。而且上位机是一直在不断循环的发送数据。事实上,我用示波器测量的结果也是看到有数据不断的进入到DSP SCI的接收引脚了。如果改用DSP SCI 的自测的模式,接收是不存在问题。