CC1110 DMA问题
如题目前在调试CC1110透传程序,程序现在遇到RF进不了RF GENERAL INTERRUPT,百度、谷歌了这类问题,也没得到有用的答复
现在问题在于CC1110串口收到数据发射的时候程序死在判断是否一包发完,但标志位的切换在中断里,因此认定无法进入终端,导致程序死机,常发。
经初步研究,本人认为是DMA问题,但不知是否正确,望大神赐教 贴一段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);
} CC1110用DMA来传输数据,需要把DMA和RF配置好才行,因为RF和DMA都有好几种数据填充方式。
请仔细研究TI的应用笔记《DN107 -- DMA and Radio Configuration》
my_avr 发表于 2013-6-17 13:44 static/image/common/back.gif
CC1110用DMA来传输数据,需要把DMA和RF配置好才行,因为RF和DMA都有好几种数据填充方式。
请仔细研究TI的应 ...
您好,我是按照这个来配置的...不知道是否还有其他要注意的地方? 所以你是看rf的中斷去看有沒有發送完畢?
DMA發送的話:假設發送10個byte,但是DMA送出第一個Byte時,rf中斷就會觸發,而不是第十個. Sem 发表于 2014-1-29 14:45
所以你是看rf的中斷去看有沒有發送完畢?
DMA發送的話:假設發送10個byte,但是DMA送出第一個Byte時,rf中斷就 ...
目前的情况是中断根本不会进...
只是在仿真的时候设个断点而已,看看能否进入中断。 marksein 发表于 2014-2-2 15:16
目前的情况是中断根本不会进...
只是在仿真的时候设个断点而已,看看能否进入中断。 ...
我剛看了一下你dma的設定;
dmaConfig.TMODE = DMA_TMODE_BLOCK;
為什麼是BLOCK?這樣設定是要搬一個區塊, 而CC1110 RFD只有一個byte;
中斷不能進,那要看中斷怎麼設定的,
一般會先清掉 RFIF 跟 S1CON 然後設定好 RFIM 最後開IEN2. Sem 发表于 2014-2-5 08:59
我剛看了一下你dma的設定;
dmaConfig.TMODE = DMA_TMODE_BLOCK;
好像看到问题所在了,谢谢您的回复,我再试试看
页:
[1]