marksein 发表于 2013-6-17 13:10:20

CC1110 DMA问题

如题
目前在调试CC1110透传程序,程序现在遇到RF进不了RF GENERAL INTERRUPT,百度、谷歌了这类问题,也没得到有用的答复
现在问题在于CC1110串口收到数据发射的时候程序死在判断是否一包发完,但标志位的切换在中断里,因此认定无法进入终端,导致程序死机,常发。

经初步研究,本人认为是DMA问题,但不知是否正确,望大神赐教

marksein 发表于 2013-6-17 13:11:17

贴一段DMA配置程序:
void TxdmaRadioSetup(void)
{   
dmaConfig.PRIORITY       = DMA_PRI_HIGH;   
dmaConfig.M8             = DMA_M8_USE_8_BITS;   
dmaConfig.IRQMASK      = DMA_IRQMASK_DISABLE;   
dmaConfig.TRIG         = DMA_TRIG_RADIO;   
dmaConfig.TMODE          = DMA_TMODE_BLOCK;   
dmaConfig.WORDSIZE       = DMA_WORDSIZE_BYTE;   
dmaConfig.SRCADDRH       = (unsigned char)((unsigned short)sendbuff >> 8);
dmaConfig.SRCADDRL       = (unsigned char)((unsigned short)sendbuff&0x00FF);
dmaConfig.DESTADDRH      = 0xDF;
dmaConfig.DESTADDRL      = 0xD9;   
dmaConfig.VLEN         = DMA_VLEN_FIRST_BYTE_P_1;   
dmaConfig.LENH         = (unsigned char)((unsigned short)(PACKET_LENGTH + 3) >> 8);
dmaConfig.LENL         = (unsigned char)((unsigned short)(PACKET_LENGTH + 3)&0x00FF);
dmaConfig.SRCINC         = DMA_SRCINC_1;   
dmaConfig.DESTINC      = DMA_DESTINC_0;   
DMA0CFGH = (unsigned char)((unsigned short)&dmaConfig >> 8);
DMA0CFGL = (unsigned char)((unsigned short)&dmaConfig&0x00FF);
}

my_avr 发表于 2013-6-17 13:44:20

CC1110用DMA来传输数据,需要把DMA和RF配置好才行,因为RF和DMA都有好几种数据填充方式。
请仔细研究TI的应用笔记《DN107 -- DMA and Radio Configuration》


marksein 发表于 2013-6-17 14:06:16

my_avr 发表于 2013-6-17 13:44 static/image/common/back.gif
CC1110用DMA来传输数据,需要把DMA和RF配置好才行,因为RF和DMA都有好几种数据填充方式。
请仔细研究TI的应 ...

您好,我是按照这个来配置的...不知道是否还有其他要注意的地方?

Sem 发表于 2014-1-29 14:45:41

所以你是看rf的中斷去看有沒有發送完畢?
DMA發送的話:假設發送10個byte,但是DMA送出第一個Byte時,rf中斷就會觸發,而不是第十個.

marksein 发表于 2014-2-2 15:16:54

Sem 发表于 2014-1-29 14:45
所以你是看rf的中斷去看有沒有發送完畢?
DMA發送的話:假設發送10個byte,但是DMA送出第一個Byte時,rf中斷就 ...

目前的情况是中断根本不会进...
只是在仿真的时候设个断点而已,看看能否进入中断。

Sem 发表于 2014-2-5 08:59:20

marksein 发表于 2014-2-2 15:16
目前的情况是中断根本不会进...
只是在仿真的时候设个断点而已,看看能否进入中断。 ...

我剛看了一下你dma的設定;

dmaConfig.TMODE          = DMA_TMODE_BLOCK;   

為什麼是BLOCK?這樣設定是要搬一個區塊, 而CC1110 RFD只有一個byte;

中斷不能進,那要看中斷怎麼設定的,
一般會先清掉 RFIF 跟 S1CON 然後設定好 RFIM 最後開IEN2.

marksein 发表于 2014-2-7 09:41:09

Sem 发表于 2014-2-5 08:59
我剛看了一下你dma的設定;

dmaConfig.TMODE          = DMA_TMODE_BLOCK;   


好像看到问题所在了,谢谢您的回复,我再试试看
页: [1]
查看完整版本: CC1110 DMA问题