-
AD8367 + AD8369成功完成
-
不好意思,很久没来这里了。才看到。具体的配置如下:
void EPI_Init()
{
SysCtlPeripheralEnable(SYSCTL_PERIPH_EPI0); //使能EPI模块
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOH);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOJ);
GPIOPinConfigure(GPIO_PH3_EPI0S0); //引脚设置
GPIOPinConfigure(GPIO_PH2_EPI0S1);
GPIOPinConfigure(GPIO_PC4_EPI0S2);
GPIOPinConfigure(GPIO_PC5_EPI0S3);
GPIOPinConfigure(GPIO_PC6_EPI0S4);
GPIOPinConfigure(GPIO_PC7_EPI0S5);
GPIOPinConfigure(GPIO_PH0_EPI0S6);
GPIOPinConfigure(GPIO_PH1_EPI0S7);
GPIOPinConfigure(GPIO_PH7_EPI0S27);
GPIOPinConfigure(GPIO_PD5_EPI0S28);
GPIOPinConfigure(GPIO_PD6_EPI0S29);
// GPIOPinConfigure(GPIO_PJ6_EPI0S30);
GPIOPinConfigure(GPIO_PG7_EPI0S31);
GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_3 ); //D0
GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_2 ); //D1
GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_4 ); //D2
GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_5 ); //D3
GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_6 ); //D4
GPIOPinTypeEPI(GPIO_PORTC_BASE,GPIO_PIN_7 ); //D5
GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_0 ); //D6
GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_1 ); //D7
GPIOPinTypeEPI(GPIO_PORTH_BASE,GPIO_PIN_7 ); //iRDY
GPIOPinTypeEPI(GPIO_PORTD_BASE,GPIO_PIN_5 ); //WR
GPIOPinTypeEPI(GPIO_PORTD_BASE,GPIO_PIN_6 ); //RD
// GPIOPinTypeEPI(GPIO_PORTJ_BASE,GPIO_PIN_6 ); //FRAME
GPIOPinTypeEPI(GPIO_PORTG_BASE,GPIO_PIN_7 ); //clk
EPIModeSet(EPI0_BASE,EPI_MODE_GENERAL);
EPIConfigGPModeSet(EPI0_BASE,EPI_GPMODE_ASIZE_NONE|EPI_GPMODE_DSIZE_8|EPI_GPMODE_RDYEN|EPI_GPMODE_CLKPIN|EPI_GPMODE_READ2CYCLE|EPI_GPMODE_READWRITE,0,0);
// HWREG(EPI0_BASE + EPI_O_GPCFG2) =0x00000000;
// HWREG(EPI0_BASE + EPI_O_GPCFG) =0x90240000;
// EPIConfigGPModeSet(EPI0_BASE,EPI_GPMODE_ASIZE_NONE|EPI_GPMODE_DSIZE_8|EPI_GPMODE_CLKGATE|EPI_GPMODE_CLKPIN|EPI_GPMODE_READ2CYCLE|EPI_GPMODE_READWRITE,0,0);
EPIFIFOConfig(EPI0_BASE,EPI_FIFO_CONFIG_RX_FULL);
EPIDividerSet(EPI0_BASE, 0); //50M
EPIIntEnable(EPI0_BASE,EPI_INT_RXREQ); //接收中断
IntEnable(INT_EPI0);
IntMasterEnable();
/* HWREG(EPI0_BASE + EPI_O_ADDRMAP) = 0x00000000; //no per addr,256b ram
HWREG(EPI0_BASE + EPI_O_RSIZE0) = 0x00000001; //8bit data
HWREG(EPI0_BASE + EPI_O_RADDR0) = 0x00000000; //current addr */
EPINonBlockingReadConfigure(EPI0_BASE,0,EPI_NBCONFIG_SIZE_8,0);
}
-
这的确是好东西啊
-
楼主,问题解决没有,说下路由的配置吧
-
不好意思,有一段时间没等论坛了,我看了一下是数据搬移速度不够buffer溢出了,我用UIP就没问题了,速度上去了。
-
我做了一个用GP MODE连接PFGA的
-
你好,找到原因了吗?我感觉pbuf_free(p)没起作用一样。
-
楼主你要开DMA才行,我现在UDP能跑60多M
-
楼主,我使用UDP接收数据,想每次接收1024B的数据,但发现接收到的数据有问题,请帮忙看看是怎么回事。谢了。。
void UDP_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p, struct ip_addr *addr, u16_t port)
{
unsigned char *temp;
temp=p->payload; if(p != NULL) // 如果收到的数据不为空 { memcpy(UDP_data_temp,temp,1024); //将接收到的数据拷贝到用户区/* while(uDMAChannelIsEnabled(UDMA_SEC_CHANNEL_EPI0TX)==0) { uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0TX); // 重新使能EPI0 TX通道 }
*/ p->payload=UDP_data_temp; udp_sendto(upcb,p,&ipaddr,port); pbuf_free(p); // 释放缓冲区数据 }
}
然后看有网友说LWIP是分段接收的,所以又改成了
void UDP_Receive(void *arg, struct udp_pcb *upcb, struct pbuf *p, struct ip_addr *addr, u16_t port){ struct ip_addr destAddr = *addr; unsigned int bufLen=0; temp=p->payload; if(p != NULL) // 如果收到的数据不为空 { for(p=p; p!=NULL; p=p->next) { memcpy(&UDP_data_temp[bufLen], p->payload, p->len); bufLen += p->len; }
/*
if(bufLen>1023) { while(uDMAChannelIsEnabled(UDMA_SEC_CHANNEL_EPI0TX)==0) { uDMAChannelEnable(UDMA_SEC_CHANNEL_EPI0TX); // 重新使能EPI0 TX通道 } }
*/
p->payload=UDP_data_temp; udp_sendto(upcb,p,&ipaddr,port);
pbuf_free(p); // 释放缓冲区数据 }}
接收到的数据还是不对
-
:shy:
-
:) 看看咯
-
估计今天是出不来了:Mad:
-
本帖最后由 paulhyde 于 2014-9-15 03:47 编辑 一般的DDS芯片,一般就产生方波,正弦波,三角波,要实现任意波形,用FPGA吧
-
全男的。。。
-
楼主,LM3s9b92的PJ口能达到16M啊,求指示,哪里说的,如果是这样的话,我可以省很多事,这两天被EPI搞郁闷了
-
xiexie
-
争取还有我的份