你好。我正在通过一些I2C代码,我们希望能够从/到I2C接口触发读写,并使用中断来处理已完成的事件。我们不希望在所有时间内进行I2C中断,也不希望处理所有各种中断(TX空,RX Over等) - 只是Rx满,主要是。
例如,我们希望触发30读(该数字可能会改变)并在接收FIFO超过阈值时获得I2C中断(RX全部条件)。
但是,我无法让R_RX_FULL中断射击。
这是我迄今为止尝试过的东西:
- 在I2C_INIT()中,调用nvic_disableirq(i2c_irqn)和nvic_setpriority(i2c_irqn,1)只是用于初始设置
- 揭示RX FIFO完全中断
setword16(i2c_intr_mask_reg,0x0000);
setBits16(i2c_intr_mask_reg,r_rx_full,1); - 清除待定IRQS
nvic_clearpendingirq(i2c_irqn);
- 当需要启用RX FIFO完全中断时,我首先将RX FIFO阈值设置为
setword16(i2c_rx_tl_reg,numbytestorx - 1)
。 - 然后我以紧密的循环发送读取命令。此循环应比从I2C接口读取的字节快得多。
- 然后我启用和清除待处理的IRQ
nvic_enableirq(i2c_irqn)
和nvic_clearpendingirq(i2c_irqn)
。
有什么想法吗?我在这里做错了吗?
关键词:
设备:
嗨Joe.Brackman,
请检查下面的帖子并按照步骤操作。
http://support.dialog-semicondiondiondiondum/i2c-data-transfer-size.
我不能在代码中看到任何错误,使用启用,禁用nvic,您应该能够击中中断。
谢谢mt_dialog.