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

AM335X 中断

Dear All:

    现在有个项目,用UART。想用UART 的 FIFO模式。FIFO Buffer 是64Bytes,现在我的数据超过了64Bytes,为了减少发送的时间,想用中断的方式向FIFO Buffer里面写数据。现在的问题是,一直中断不正确,一开启UART的发送中断 程序就死掉了。 一直觉得是 中断向量表没有初始化。

   想问问AM335X相关中断向量表在哪里初始化的??项目急急急!

Jian Zhou:

首先确认下,你是照这个配置流程做的么:

http://processors.wiki.ti.com/index.php/StarterWare_UART/IrDA/CIR#Interrupt_Mode

user4937584:

回复 Jian Zhou:

感谢! 是这样配置的,也是照到上面配置的!

  现在我想做成,在发送的时候才开发送中断,发送完了关闭中断!发现 UARTIntEnable()这个函数不起作用呢?

Jian Zhou:

回复 user4937584:

UART的FIFO中断配置,要严格按照那个配置流程,否则会出问题。

user4937584:

回复 Jian Zhou:

是那样配置的。现在发现,进中断以后 等 发送完把中断关了,出中断后就开启不到中断了。对开启中断那个函数有点懵!

Jian Zhou:

回复 user4937584:

应该是中断响应后马上关中断,你是不是把中断响应函数修改了?

user4937584:

回复 Jian Zhou:

现在我想做成, 先往FIFO里面装64bytes,开启中断。等这64bytes发送完了,产生中断,在中断里面再装64bytes。  

现在发现等没装到64bytes的时候就退出中断了。 有没有一种配置方法在中断中装满64bytes才退出中断,等待这64bytes发完在进中断又装。    现在能发,但是中断次数太多了!

Jian Zhou:

回复 user4937584:

没有64bytes触发的,根据文档,只有8,16,32,56:

Can be written only if EFR[4] = 1.Sets the trigger level for the TX FIFO: If SCR[6] = 0 and TLR[3] toTLR[0] not equal to 0000, TX_FIFO_TRIG is not considered.If SCR[6] = 1, TX_FIFO_TRIG is 2 LSB of the trigger level (1 to 63on 6 bits) with a granularity of 1.If SCR[6] = 0 and TLR[3] to TLR[0] = 0000, then:0h = 8 characters1h = 16 characters2h = 32 characters3h = 56 characters

user4937584:

回复 Jian Zhou:

第二个If。SCR[6] = 1时,不应该是1到63吗? ,中断里面做不做得到连续装值?比如说我配置为56bytes,超过这个值是不是会退出中断?低于这个值会发生中断?

Jian Zhou:

回复 user4937584:

我看TRM的描述,连续装载是DMA触发,中断触发只有那4种。

user4937584:

回复 Jian Zhou:

是不是触发了中断只能在FIFO中装载1byte呢?不可以装多个bytes吗?  如果这样的话中断次数是不是也太多了?

赞(0)
未经允许不得转载:TI中文支持网 » AM335X 中断
分享到: 更多 (0)