TI中文支持网
TI专业的中文技术问题搜集分享网站

想请问下SCI中FIFO中断的触发过程?

我看了下sci loopback例程里定义了以下数组

Uint16 sdataA[2]; // Send data for SCI-A
Uint16 rdataA[2]; // Received data for SCI-A
Uint16 rdata_pointA; // Used for checking the received data

然后主函数里给sdata数组写入数据

for(i = 0; i<2; i++)
{
sdataA[i] = i;
}

rdata_pointA = sdataA[0];

然后interrupt void sciaRxFifoIsr(void)就被触发了?

主要有以下疑惑:

1.sdata[]和fifo的关系是什么呢?程序里这两个好像完全没有关联,为什么给sdata写入数据后fifo就能进入中断开始发送数据呢?

2.看了下数据手册fifo的数据手册,好像并没有16个字节存放数据的FIFO寄存器,那么是怎么访问FIFO中的数据的呢?

EE搬砖工:不好意思,我打错了,是主函数里给sdata数组写入数据后interrupt void sciaTxFifoIsr(void)就被触发了。

我看了下sci loopback例程里定义了以下数组

Uint16 sdataA[2]; // Send data for SCI-A
Uint16 rdataA[2]; // Received data for SCI-A
Uint16 rdata_pointA; // Used for checking the received data

然后主函数里给sdata数组写入数据

for(i = 0; i<2; i++)
{
sdataA[i] = i;
}

rdata_pointA = sdataA[0];

然后interrupt void sciaRxFifoIsr(void)就被触发了?

主要有以下疑惑:

1.sdata[]和fifo的关系是什么呢?程序里这两个好像完全没有关联,为什么给sdata写入数据后fifo就能进入中断开始发送数据呢?

2.看了下数据手册fifo的数据手册,好像并没有16个字节存放数据的FIFO寄存器,那么是怎么访问FIFO中的数据的呢?

Susan Yang:请问您现在使用的时哪款芯片以及开发板?

我看了下sci loopback例程里定义了以下数组

Uint16 sdataA[2]; // Send data for SCI-A
Uint16 rdataA[2]; // Received data for SCI-A
Uint16 rdata_pointA; // Used for checking the received data

然后主函数里给sdata数组写入数据

for(i = 0; i<2; i++)
{
sdataA[i] = i;
}

rdata_pointA = sdataA[0];

然后interrupt void sciaRxFifoIsr(void)就被触发了?

主要有以下疑惑:

1.sdata[]和fifo的关系是什么呢?程序里这两个好像完全没有关联,为什么给sdata写入数据后fifo就能进入中断开始发送数据呢?

2.看了下数据手册fifo的数据手册,好像并没有16个字节存放数据的FIFO寄存器,那么是怎么访问FIFO中的数据的呢?

EE搬砖工:

回复 Susan Yang:

用的是launchpad,28379D的那款。程序是controlsuite里的sci loopback interrupt那个例程。

我看了下sci loopback例程里定义了以下数组

Uint16 sdataA[2]; // Send data for SCI-A
Uint16 rdataA[2]; // Received data for SCI-A
Uint16 rdata_pointA; // Used for checking the received data

然后主函数里给sdata数组写入数据

for(i = 0; i<2; i++)
{
sdataA[i] = i;
}

rdata_pointA = sdataA[0];

然后interrupt void sciaRxFifoIsr(void)就被触发了?

主要有以下疑惑:

1.sdata[]和fifo的关系是什么呢?程序里这两个好像完全没有关联,为什么给sdata写入数据后fifo就能进入中断开始发送数据呢?

2.看了下数据手册fifo的数据手册,好像并没有16个字节存放数据的FIFO寄存器,那么是怎么访问FIFO中的数据的呢?

Susan Yang:

回复 EE搬砖工:

FIFO可以理解为一个先进先出的buffer,收发FIFO主要是为了解决串口收发中断过于频繁而导致CPU的效率不高的问题。如果没有FIFO,则没收发一个数据都要中断处理一次,有了FIFO,可以在连续收发若干个数据(根据FIFO的深度而定)后才产生一次中断去处理数据,大大提高效率。

C28x的SCI 在设定一个FIFO level之后,如果FIFO接收到的数据等于这个level,就会触发FIFO接收中断。

具体您可以看一下

www.ti.com/…/spruhm8i.pdf

的 19.13.1 SCI FIFO Description
以及 Figure 19-10. SCI FIFO Interrupt Flags and Enable Logic

赞(0)
未经允许不得转载:TI中文支持网 » 想请问下SCI中FIFO中断的触发过程?
分享到: 更多 (0)