以前一直用的6713外扩的752B,FIFO有64字节,只用到了接收中断,发送数据直接用FIFO了,没有用过中断。
现在6747只有16字节FIFO,估计以前的办法是无效了,正在研究6747发送中断,高手们多指点啊!
问题一:
发送中断的原理是怎样的?
我的理解是建立一个数据缓存区,向这个缓冲区里面丢要发送的数据,如果FIFO设置成8个,是每发送8个数据就进入中断?中断服务程序就将这个缓冲区里面的数据写到THR吗,这时候写入THR数据的个数有没有限制什么的?
还有初始的发送中断如何产生?比如要发10个字节,初始的发送数据个数是不是就只能写8,当产生了数据发送中断以后再把后面的2个字节发送出去吗?
问题二:(和FIFO无关哈)
开发板上用了I2C0,我看datasheet它的SCK是AUXPLL,那就是输入晶振啊,开发板上是24M,但是I2C程序的配置分频配的是3,也就是说把AUXPLL做了4分频是吧,应该是6M,但是代码后面的解释是12M,不懂了,求高手解释啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没有调试过 看到有人说:
没有通过PSC将UART模块使能吧。
如果你不确定uart的中断处理的流程的话,建议下载starterware,可参靠OMAPL138的starterware中的uart例子
以下为设置uart2的流程:
/* Enabling the PSC for UART2.*/
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_UART2, PSC_POWERDOMAIN_ALWAYS_ON,
PSC_MDCTL_NEXT_ENABLE);
/* Setup PINMUX */
UARTPinMuxSetup(2, FALSE);
/* Enabling the transmitter and receiver*/
UARTEnable(SOC_UART_2_REGS);
/* 1 stopbit, 8-bit character, no parity */
config = UART_WORDL_8BITS;
/* Configuring the UART parameters*/
UARTConfigSetExpClk(SOC_UART_2_REGS, SOC_UART_2_MODULE_FREQ,
BAUD_115200, config,
UART_OVER_SAMP_RATE_16);
/* Enabling the FIFO and flushing the Tx and Rx FIFOs.*/
UARTFIFOEnable(SOC_UART_2_REGS);
/* Setting the UART Receiver Trigger Level*/
UARTFIFOLevelSet(SOC_UART_2_REGS, UART_RX_TRIG_LEVEL_1);
/*
** Enable AINTC to handle interrupts. Also enable IRQ interrupt in ARM
** processor.
*/
SetupInt();
/* Configure AINTC to receive and handle UART interrupts. */
ConfigureIntUART();
/* Preparing the 'intFlags' variable to be passed as an argument.*/
intFlags |= (UART_INT_LINE_STAT |
UART_INT_TX_EMPTY |
UART_INT_RXDATA_CTI);
/* Enable the Interrupts in UART.*/
UARTIntEnable(SOC_UART_2_REGS, intFlags);
while(1);
一周热门 更多>