cc1110 flash 写不进数据,有高手帮解决下,谢谢
时间:12-23
整理:3721RD
点击:
void Flash_DmaWrite( uint16 *pFlashAddr, unsigned char * pSrcBuf, unsigned int Length )
{
// Making sure a multiplum of 4 bytes is transferred.
while(Length & 0x0003){
Length++;
}
dmaConfig.SRCADDRH = ((unsigned short)pSrcBuf >> 8) & 0x00FF;
dmaConfig.SRCADDRL = (unsigned short)pSrcBuf & 0x00FF;
dmaConfig.DESTADDRH = ((unsigned short)&X_FWDATA >> 8) & 0x00FF;
dmaConfig.DESTADDRL = (unsigned short)&X_FWDATA & 0x00FF;
dmaConfig.VLEN = DMA_VLEN_USE_LEN;
dmaConfig.LENH = (Length >> 8) & 0x00FF;
dmaConfig.LENL = Length & 0x00FF;
dmaConfig.WORDSIZE = DMA_WORDSIZE_BYTE;
dmaConfig.TMODE = DMA_TMODE_SINGLE;
dmaConfig.TRIG = DMA_TRIG_FLASH;
dmaConfig.SRCINC = DMA_SRCINC_1;
dmaConfig.DESTINC = DMA_DESTINC_0;
dmaConfig.IRQMASK = DMA_IRQMASK_DISABLE;
dmaConfig.M8 = DMA_M8_USE_8_BITS;
dmaConfig.PRIORITY = DMA_PRI_HIGH;
/* The DMA configuration data structure may reside at any location in
* unified memory space, and the address location is passed to the DMA
* through DMA0CFGH:DMA0CFGL.
*/
DMA0CFGH = ((unsigned short)&dmaConfig >> 8) & 0x00FF;
DMA0CFGL = (unsigned short)&dmaConfig & 0x00FF;
/* Waiting for the flash controller to be ready */
while (FCTL & FCTL_BUSY);
/* Configuring the flash controller. Setings:
* FWT: 0x11 (default setting, matches 13 MHz clock frequency).
* FADDRH:FADDRL: point to the area in flash to write to - flashDataAddr.
*/
FWT = 0x11;
FADDRH = (short)pFlashAddr >> 9;
FADDRL = ((short)pFlashAddr >> 1) & ~0xFF00;
/* Erase the page that will be written to. */
Flash_StartErase();
/* Wait for the erase operation to complete. */
while (FCTL & FCTL_BUSY);
/* Arm the DMA channel, so that a DMA trigger will initiate DMA writing. */
DMAARM |= DMA_CHANNEL_0; // Arm DMA channel 0
/* Enable flash write. Generates a DMA trigger. Must be aligned on a 2-byte
* boundary and is therefor implemented in assembly.
*/
Flash_StartWrite();
/* Wait for DMA transfer to complete. */
while (!(DMAIRQ & DMAIRQ_DMAIF0));
/* Wait until flash controller not busy. */
while (FCTL & (FCTL_BUSY | FCTL_SWBSY));
/* By now, the transfer is completed, so the transfer count is reached.
* The DMA channel 0 interrupt flag is then set, so we clear it here.
*/
DMAIRQ &= ~DMAIRQ_DMAIF0;
}
flash写不进数据,不知道是什么原因。
需要先分辨是硬件还是软件原因。用TI参考板试试,如果也不能就是软件原因。
我用TI参考代码也不行
我用TI参考代码试了,也写不进数据,
请问所用开发板是TI的还是自己设计的?
TI 的开发板
TI的开发板,TI的代码,那只能考虑接口的问题了
什么叫借口的问题,能具体点吗?
