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吗? 如果这样的话中断次数是不是也太多了?