DSP6747发送中断如何操作

2019-08-03 17:41发布

以前一直用的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,不懂了,求高手解释啊!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
17条回答
zhangmangui
1楼-- · 2019-08-03 19:44
帮你咨询一下   
eagle200203
2楼-- · 2019-08-03 21:59
 精彩回答 2  元偷偷看……
zhangmangui
3楼-- · 2019-08-04 00:33
eagle200203 发表于 2014-3-3 12:06
哎,大神们怎么都还没有回答啊,先说一下我的调试的情况哈:
用了串口发送中断之后,好像发送一个数据就进 ...

没有调试过  看到有人说:
没有通过PSC将UART模块使能吧。
zhangmangui
4楼-- · 2019-08-04 01:30
收集到的  不知道能不能帮到你

如果你不确定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);
chenci2013
5楼-- · 2019-08-04 05:13
应该在中断执行发送程序吧
chenci2013
6楼-- · 2019-08-04 10:08
跟fifo差不多的

一周热门 更多>