完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我尝试用DMA使I2C接口工作正确。非常好的一点是,我可以发送和接收的每一次“cyu3pi2csendcommand”功能。回调和事件”cy_u3p_i2c_event_rx_done”和“cy_u3p_i2c_event_tx_done”出现在每一种情况下,太。我觉得需要什么东西要在这个时候做的但我不知道!我尝试了一些DMA功能: - CYU3PDMACHANNEXTENT CYU3PDMAN简历 CYU3PDMAN通道复位 第二次发送或接收每次都不做任何事情。I2CSEnDebug命令返回成功,但什么也没有发生。 如何在DMA模式下使用I2C模块不止一次? C代码: cyu3perrorcode_t is_i2cinit(void){ cyu3perrorcode_t状态= cy_u3p_success;cyu3pi2cconfig_t配置;状态= cyu3pi2cinit();如果(状态!= cy_u3p_success){返回状态;}状态= is_i2ccreatedmachannel();如果(状态!= cy_u3p_success){返回状态;} glwritebuffer.buffer = &;glwritedata [ 0 ];glwritebuffer.count = 0;glwritebuffer.size = i2c_dma_buf_size;glwritebuffer.status = null;glreadbuffer.buffer = &;glreaddata [ 0 ];glreadbuffer.count = 0;glreadbuffer.size = i2c_dma_buf_size;glreadbuffer.status = null;gli2clock = cyfalse;config.bitrate = 400000;// 400千赫config.isdma = cytrue;/ /登记转移模式config.bustimeout = 0xffffffffu;/ /没有超时config.dmatimeout = 0xffff;/ /没有超时状态= cyu3pi2csetconfig(&;配置,&;is_i2cir);如果(状态!= CyuU3pIn成功){返回状态;}返回状态;} 无效is_i2cir(cyu3pi2cevt_t EVT,cyu3pi2cerror_t误差){ cyu3perrorcode_t状态= cy_u3p_success;开关(EVT){案例cy_u3p_i2c_event_rx_done:如果(gli2clock = = cytrue){状态= cyu3pdmachannelabort(&;gldmachannelhandlei2c);gli2clock = cyfalse;} { is_i2cerrorevent其他(错误);}打破;案例cy_u3p_i2c_event_tx_done:如果(gli2clock = = cytrue){状态= cyu3pdmachannelabort(&;gldmachannelhandlei2c);gli2clock = cyfalse;}否则{ is_i2cerrorevent(错误);}打破;案例:案例cy_u3p_i2c_event_lost_arbi cy_u3p_i2c_event_timeout打破;传统:打破;案例cy_u3p_i2c_event_error:is_i2cerrorevent(错误);断裂;默认:break;} } cyu3perrorcode_t is_i2cwrite(uint8_t dvcadr,uint8_t sizeadr,uint8_t *包,uint8_t数据,uint8_t *数据){虽然(gli2clock = = cytrue);cyu3perrorcode_t状态= cy_u3p_success;glwritebuffer.buffer =数据;glwritebuffer.count =数据;状态= cyu3pdmachannelsetupsendbuffer(&;GLDmachannelhandlei2c,&;glwritebuffer);//如果(状态= = cy_u3p_success){ gli2clock = cytrue;状态= is_i2ccommunicate(cyfalse,dvcadr,sizeadr、包、数据、数据);}返回状态;} cyu3perrorcode_t is_i2cread(uint8_t dvcadr,uint8_t sizeadr,uint8_t *包,uint8_t数据,uint8_t*数据){虽然(gli2clock = = cytrue);cyu3perrorcode_t状态= cy_u3p_success;glreadbuffer.buffer =数据;glreadbuffer.count =数据;状态= cyu3pdmachannelsetuprecvbuffer(&;gldmachannelhandlei2c,&;glreadbuffer);//如果(状态= = cy_u3p_success){ gli2clock = cytrue;现状S = is_i2ccommunicate(cytrue,dvcadr,sizeadr、包、数据、数据);}返回状态;} cyu3perrorcode_t is_i2ccommunicate(cybool_t读,uint8_t dvcadr,uint8_t sizeadr,uint8_t *包,uint8_t数据,uint8_t *数据){ cyu3perrorcode_t状态= cy_u3p_success;cyu3pi2cpreamble_t序言;uint8_t cntbytespreamble = 0;uint8_t lengthadr = 0;uint8_t dvcadrwrite = dvcadr &;0xfe;uint8_t dvcadrread = dvcadr | 0x01;preamble.ctrlmask = 0;preamble.length = 0;如果(sizeadr >;0){序言。缓冲[0 ] = dvcadrwrite;cntbytespreamble ++;}为(lengthadr = 0;lengthadr LT;sizeadr;lengthadr ++){序言。缓冲[ lengthadr + 1 ] =包[ lengthadr ];cntbytespreamble ++;}如果(读= = cytrue){ if(sizeadr & gt;0){序言。缓冲[ + lengthadr ] = dvcadrread;preamble.length =(+ + cntbytespreamble);preamble.ctrlmask = 0x01 <;<;(cntbytespreamble-2);} }否则{ preamble.length = cntbytespreamble;preamble.ctrlmask = 0x00;} //状态= cyu3pi2csetblockxfer(数据);状态= cyu3pi2csendcommand(&;序言、数据、读);返回状态;} cyu3perrorcode_t is_i2ccreatedmachannel(void){ cyu3pdmachannelconfig_t dmai2cconfig;cyu3perrorcode_t状态= cy_u3p_success;/*创建两个U口* / dmai2cconfig.size = i2c_dma_buf_size之间的DMA手动通道;dmai2cconfig.count = i2c_dma_buf_count;dmai2cconfig.prodsckid = cy_u3p_lpp_socket_i2c_prod;dmai2cconfig.conssckid = cy_u3p_lpp_socket_i2c_coNS;dmai2cconfig.dmamode = cy_u3p_dma_mode_byte;dmai2cconfig.notification = cy_u3p_dma_cb_xfer_cplt;dmai2cconfig.cb = is_i2cdmacallback;dmai2cconfig.prodheader = 0;dmai2cconfig.prodfooter = 0;dmai2cconfig.consheader = 0;dmai2cconfig.prodavailcount = 0;/*创建频道* /状态S = cyu3pdmachannelcreate(&;gldmachannelhandlei2c,cy_u3p_dma_type_auto,&;dmai2cconfig);返回状态;} 以上来自于百度翻译 以下为原文 Hello, I try to get the I2C interface working correct with DMA. So far so good the point is, I can send and receive each one time with the function "CyU3PI2cSendCommand". The Callback with the event "CY_U3P_I2C_EVENT_RX_DONE" and "CY_U3P_I2C_EVENT_TX_DONE" occurs in each case too. I think it needs anything to be done at this time but I do not know what! I tried some DMA functions: - CyU3PDmaChannelAbort - CyU3PDmaChannelResume - CyU3PDmaChannelReset The second send or receive does each time nothing. The I2cSendCommand call return SUCCESS but nothing happened. How can I use the I2C module more than one time in DMA mode? C - Code: CyU3PErrorCode_t IS_I2cInit(void) { CyU3PErrorCode_t status = CY_U3P_SUCCESS; CyU3PI2cConfig_t config; status = CyU3PI2cInit(); if(status != CY_U3P_SUCCESS) { return status; } status = IS_I2cCreateDmaChannel(); if(status != CY_U3P_SUCCESS) { return status; } glWriteBuffer.buffer = &glWriteData[0]; glWriteBuffer.count = 0; glWriteBuffer.size = I2C_DMA_BUF_SIZE; glWriteBuffer.status = NULL; glReadBuffer.buffer = &glReadData[0]; glReadBuffer.count = 0; glReadBuffer.size = I2C_DMA_BUF_SIZE; glReadBuffer.status = NULL; glI2cLock = CyFalse; config.bitRate = 400000; // 400 kHz config.isDma = CyTrue; // Register transfer mode config.busTimeout = 0xFFFFFFFFU; // no timeout config.dmaTimeout = 0xFFFF; // no timeout status = CyU3PI2cSetConfig(&config, &IS_I2cIR); if(status != CY_U3P_SUCCESS) { return status; } return status; } void IS_I2cIR(CyU3PI2cEvt_t evt, CyU3PI2cError_t error) { CyU3PErrorCode_t status = CY_U3P_SUCCESS; switch(evt) { case CY_U3P_I2C_EVENT_RX_DONE: if(glI2cLock == CyTrue) { status = CyU3PDmaChannelAbort(&glDmaChannelHandleI2c); glI2cLock = CyFalse; } else { IS_I2cErrorEvent(error); } break; case CY_U3P_I2C_EVENT_TX_DONE: if(glI2cLock == CyTrue) { status = CyU3PDmaChannelAbort(&glDmaChannelHandleI2c); glI2cLock = CyFalse; } else { IS_I2cErrorEvent(error); } break; case CY_U3P_I2C_EVENT_TIMEOUT: break; case CY_U3P_I2C_EVENT_LOST_ARBITRATION: break; case CY_U3P_I2C_EVENT_ERROR: IS_I2cErrorEvent(error); break; default: break; } } CyU3PErrorCode_t IS_I2cWrite(uint8_t dvcAdr, uint8_t sizeAdr, uint8_t *pAdr, uint8_t sizeData, uint8_t *pData) { while(glI2cLock==CyTrue); CyU3PErrorCode_t status = CY_U3P_SUCCESS; glWriteBuffer.buffer = pData; glWriteBuffer.count = sizeData; status = CyU3PDmaChannelSetupSendBuffer(&glDmaChannelHandleI2c, &glWriteBuffer); //if(status == CY_U3P_SUCCESS) { glI2cLock = CyTrue; status = IS_I2cCommunicate(CyFalse, dvcAdr, sizeAdr, pAdr, sizeData, pData); } return status; } CyU3PErrorCode_t IS_I2cRead(uint8_t dvcAdr, uint8_t sizeAdr, uint8_t *pAdr, uint8_t sizeData, uint8_t *pData) { while(glI2cLock==CyTrue); CyU3PErrorCode_t status = CY_U3P_SUCCESS; glReadBuffer.buffer = pData; glReadBuffer.count = sizeData; status = CyU3PDmaChannelSetupRecvBuffer(&glDmaChannelHandleI2c, &glReadBuffer); //if(status == CY_U3P_SUCCESS) { glI2cLock = CyTrue; status = IS_I2cCommunicate(CyTrue, dvcAdr, sizeAdr, pAdr, sizeData, pData); } return status; } CyU3PErrorCode_t IS_I2cCommunicate(CyBool_t read, uint8_t dvcAdr, uint8_t sizeAdr, uint8_t *pAdr, uint8_t sizeData, uint8_t *pData) { CyU3PErrorCode_t status = CY_U3P_SUCCESS; CyU3PI2cPreamble_t preamble; uint8_t CntBytesPreamble = 0; uint8_t LengthAdr = 0; uint8_t dvcAdrWrite = dvcAdr & 0xFE; uint8_t dvcAdrRead = dvcAdr | 0x01; preamble.ctrlMask = 0; preamble.length = 0; if(sizeAdr > 0) { preamble.buffer[0] = dvcAdrWrite; CntBytesPreamble++; } for(LengthAdr = 0; LengthAdr < sizeAdr; LengthAdr++) { preamble.buffer[LengthAdr+1] = pAdr[LengthAdr]; CntBytesPreamble++; } if(read == CyTrue) { if(sizeAdr > 0) { preamble.buffer[++LengthAdr] = dvcAdrRead; preamble.length = (++CntBytesPreamble); preamble.ctrlMask = 0x01 << (CntBytesPreamble-2); } } else { preamble.length = CntBytesPreamble; preamble.ctrlMask = 0x00; } //status = CyU3PI2cSetBlockXfer(sizeData); status = CyU3PI2cSendCommand(&preamble, sizeData, read); return status; } CyU3PErrorCode_t IS_I2cCreateDmaChannel(void) { CyU3PDmaChannelConfig_t dmaI2cConfig; CyU3PErrorCode_t status = CY_U3P_SUCCESS; /* Create a DMA MANUAL Channel between two sockets of the U port */ dmaI2cConfig.size = I2C_DMA_BUF_SIZE; dmaI2cConfig.count = I2C_DMA_BUF_COUNT; dmaI2cConfig.prodSckId = CY_U3P_LPP_SOCKET_I2C_PROD; dmaI2cConfig.consSckId = CY_U3P_LPP_SOCKET_I2C_CONS; dmaI2cConfig.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaI2cConfig.notification = CY_U3P_DMA_CB_XFER_CPLT; dmaI2cConfig.cb = Is_I2cDmaCallback; dmaI2cConfig.prodHeader = 0; dmaI2cConfig.prodFooter = 0; dmaI2cConfig.consHeader = 0; dmaI2cConfig.prodAvailCount = 0; /* Create the channel */ status = CyU3PDmaChannelCreate(&glDmaChannelHandleI2c, CY_U3P_DMA_TYPE_AUTO, &dmaI2cConfig); return status; } |
|
相关推荐
9个回答
|
|
对不起,我忘了什么…
功能 - CYU3PDMACHANNEXTENT CYU3PDMAN简历 CYU3PDMAN通道复位 返回“CyuU3PyErrRoMutExk失效” 以上来自于百度翻译 以下为原文 Sorry I forgot something.... The functions - CyU3PDmaChannelAbort - CyU3PDmaChannelResume - CyU3PDmaChannelReset returns with "CY_U3P_ERROR_MUTEX_FAILURE" |
|
|
|
CYU3PDMACHANNELSERT是用于清除操作间的DMAChank的正确APICALL。不同的是,你需要确保dmachannel回到空闲状态之前你重置。
我需要正确地做这项工作的变化将你的代码。我也总结了下面的变化: 1。改变了dmanotifications列表(在参数cyu3pdmachannelcreate)包括cy_u3p_dma_cb_send_cplt和cy_u3p_dma_cb_recv_cplt。当你不工作的cy_u3p_dma_cb_xfer_cpltwill使用cyu3pdmachannelsetupsend / recvbuffer apicalls。 2。添加了一个新的标志来跟踪DMAChank的状态。这个标志是在cyu3pdmachannelsetupsendbuffer或RecvBuffer称为真,作假时收到dmacallback。我还添加了DMA回调样本实施因为原代码不包括这个。 三。在I2C回调(is_i2cir),等待DMA回调来然后打电话给cyu3pdmachannelreset清理通道。 4。启用的cyu3pdmachannelsetupsend / recvbuffer apicalls返回状态检查。如果这些apicalls失败,I2C回调将不会被称为转移不会完整。因此,有必要检查这里的状态。 5。改变了所有的cyu3perrorcode_t变量cyu3preturnstatus_t变量。这是FX3 APIQUEST代码使用的正确类型。 6。增加了一些样品的测试代码,调用读写函数反复。请注意,延迟(约10ms)是任何I2C写操作和读/写操作使用下的I2C驱动程序的当前版本时间所需的。这个限制在我们的发行说明中也被注意到了。 我打所有的地方,我改变了你的代码注释包括“修复”。这个代码是ani2c eepromdevice测试工作正常。 当做, 卡蒂克 I2C.CODE.C.ZIP 1.9 K 以上来自于百度翻译 以下为原文 CyU3PDmaChannelReset is the correct API call to be used to clear the DMA channel between operations. The difference is that you need to ensure that the DMA channel is back to idle state before you reset it. I am attaching your code with the changes required to make this work correctly. I am also summarizing the changes below: 1. Changed the list of DMA notifications (in the parameter to CyU3PDmaChannelCreate) to include CY_U3P_DMA_CB_SEND_CPLT and CY_U3P_DMA_CB_RECV_CPLT. The CY_U3P_DMA_CB_XFER_CPLT will not work when you are using the CyU3PDmaChannelSetupSend/RecvBuffer API calls. 2. Added a new flag to track the status of the DMA channel. This flag is being made true after the CyU3PDmaChannelSetupSendBuffer or RecvBuffer is called, and made false when the DMA callback is received. I have also added a sample implementation of the DMA callback because the original code did not include this. 3. In the I2C callback (IS_I2cIR), wait for the DMA callback to come and then call CyU3PDmaChannelReset to clear up the channel. 4. Enabled the return status checks for the CyU3PDmaChannelSetupSend/RecvBuffer API calls. If these API calls fail, the I2C callback will not be called as the transfer will not get complete. Therefore, it is necessary to check the status here. 5. Changed all CyU3PErrorCode_t variables to CyU3PReturnStatus_t variables. This is the correct type to be used for FX3 API return codes. 6. Added some sample test code that calls the read/write functions repeatedly. Please note that a delay (of about 10 ms) is required between any I2C write operation and the next I2C read/write operation when using the current version of the drivers. This restriction is noted in our release notes as well. I have marked all places where I changed your code with comments including the word "FIX". This code was tested with an I2C EEPROM device and is working fine. Regards, Karthik S
|
|
|
|
嗨,凯斯,
/ / 非常感谢你的回答。我试图实现您的修复到我的代码,但实际上不能让它工作。 / / / / 在第一次写入或读取之后,我只得到一个DMA回调。如果我下一次写或读,我没有得到DMA回调,所以DMA忙碌标志永远不会被重置,它将永远停留在无休止的循环中。 / / 我附上了我的例子。 I2C 3 K 以上来自于百度翻译 以下为原文 Hi kys, // many thanks for your answer. I tried to implement your fixes into my code but actually can not get it to work. // // I get just one DMA Callback after the first write or read. If I write or read next time I did not get the DMA Callback again so the DMA-Busy Flag gets never be reseted and it stays forever in the endless loop. // I attached my example.
|
|
|
|
嗨,LuPI6,
您的代码看起来很好,并且类似的应用程序在我的测试设置上工作正常。 我会研究这个问题,并在一天之内得到调试建议。 谢谢和问候, 卡蒂克 以上来自于百度翻译 以下为原文 Hi Lumpi6, Your code looks fine and a similar application is working correctly on my test setup. I will look into this and get back with debug suggestions within a day. Thanks and regards, Karthik |
|
|
|
嗨,LuPI6,
我对你的申请有几个问题。 1。您分配给I2CDMALION和I2CDMARID调用的线程的优先级是什么? 2。从现在正在生成的任何APICARES中获得错误返回(DMACHANNELSEDER,DmaChannelSetupSendBuffer,DmaChannelSetupRecvBuffer还是I2CSEnDebug)? 三。如果可能的话,请提供一个指向你试图通过FX3访问的I2C设备的指针。 谢谢, 卡蒂克 以上来自于百度翻译 以下为原文 Hi Lumpi6, I have a couple of questions on your application. 1. What is the priority level you have assigned to the thread from which you are making the I2cDmaWrite and I2cDmaRead calls? 2. Are you getting error returns from any of the API calls that you are making as of now (DmaChannelReset, DmaChannelSetupSendBuffer, DmaChannelSetupRecvBuffer or I2cSendCommand)? 3. If possible, please provide a pointer to the I2C device that you are trying to access via the FX3. Thanks, Karthik |
|
|
|
嗨,Karthik,
γ 1。线程创建 /*创建/ retthrdcreate = cyu3pthreadcreate应用*线程(&;i2cappthread,/ * I2C DMA螺纹结构* /“I2C的DMA方式测试”,/ *线程ID和线程名称* / / * I2C i2cappthread_entry,DMA线程的入口函数* / 0 / *没有输入参数线程* / / * PTR,Pointer所分配的线程堆栈* / / * I2C thread_i2c_thread_stack,DMA的线程堆栈大小*/ /* I2C thread_i2c_thread_priority,DMA线程优先级*/ /* I2C thread_i2c_thread_priority,DMA线程优先级*/ cyu3p_no_time_slice,/ * * / cyu3没有应用程序线程时间片p_auto_start / *启动线程立即* /);#定义thread_i2c_thread_stack(0x1000)/ * I2C DMA线程堆栈大小* / #定义thread_i2c_thread_priority(8)/ * I2C DMA线程优先级*/ | 2。我没有任何API调用的错误。 γ 三。I2C EEPROM是一m24c64这是工作的罚款的标准发送和接收I2C功能。 γ 最好的问候 LUMIP6 以上来自于百度翻译 以下为原文 Hi Karthik, | 1. Thread - Creation /* Create the thread for the application */ retThrdCreate = CyU3PThreadCreate (&I2cAppThread, /* I2C in DMA Thread structure */ "I2C in DMA Mode TEST", /* Thread ID and Thread name */ I2cAppThread_Entry, /* I2C in DMA Thread Entry function */ 0, /* No input parameter to thread */ ptr, /* Pointer to the allocated thread stack */ THREAD_I2C_THREAD_STACK, /* I2C in DMA Thread stack size */ THREAD_I2C_THREAD_PRIORITY, /* I2C in DMA Thread priority */ THREAD_I2C_THREAD_PRIORITY, /* I2C in DMA Thread priority */ CYU3P_NO_TIME_SLICE, /* No time slice for the application thread */ CYU3P_AUTO_START /* Start the Thread immediately */ ); #define THREAD_I2C_THREAD_STACK (0x1000) /* I2C in DMA thread stack size */ #define THREAD_I2C_THREAD_PRIORITY (8) /* I2C in DMA thread priority */ | 2. I get no Errors of any API calls. | 3. The I2C EEPROM is a M24C64 and this is working fine with the standard send and receive functions of the I2C. | Best regards lumpi6 |
|
|
|
嗨,Karthik,
我可以写两次,四次,所以我认为写作机制很好。问题是,我只能读取一次,然后DMA忙标志永远不会设置为零。 发送通知“CyuU3PyDMABCBOSDENEXCPLT”每次在DMA回调中发生,但接收通知“CyuU3PyDMABCBOReVVILCPLT”或任何其他调用都不会发生。为什么?我认为有问题… 最好的问候 LUMIP6 以上来自于百度翻译 以下为原文 Hi Karthik, I can write two times, four times so that I think the write mechnism works fine. The problem is that I can just read once and then the DMA-Busy flag will never be set to zero. The send notification "CY_U3P_DMA_CB_SEND_CPLT" happens each time at the DMA callback but the receive notification "CY_U3P_DMA_CB_RECV_CPLT" or any other call never happens. Why? I think there is the problem... Best regards lumpi6 |
|
|
|
嗨,LuPI6,
谢谢提供数据。 你看到这个问题是因为读数据(在你的情况下是2字节)没有填充DMAbuffer(在你的情况下是64字节)。在这种情况下,DMAChank处于等待状态,等待更多的数据进入并填充缓冲器。 DMAbuffer大小是通过GyDimabuffReal.Stand参数指定的,需要是16字节的倍数。 我们将在下一次发布时更新APITO来处理这个案例。 现在,请使用下列工作之一: 1。当您想读取少量数据时,请使用CYU3PI2CPENEVENBYPAIL API代替DMAX操作。您可以使用DMAWRADE操作,正如您当前正在阅读的那样,希望读取将填充整个DMAbuffer的数据。 2。从I2CDMAIR函数中使用“CYU3PDMACHANNEL SETRAPRAPUP(和GGHANDLI2CDMACH)”接收CYU-U3PII2CII事件RXSO完成事件。这将导致DMAbuffer被提交并导致接收DMACLABACK。 请告诉我,如果你有这些工作的问题/关注。 问候, 卡蒂克 以上来自于百度翻译 以下为原文 Hi Lumpi6, Thanks for providing the data. You are seeing this problem because the read data (2 bytes in your case) is not filling the DMA buffer (64 bytes in your case). In such a case, the DMA channel is on hold waiting for more data to come in and fill the buffer. The DMA buffer size is specified through the g_DmaBufferRead.size parameter and needs to be a multiple of 16 bytes. We will work on updating the API to take care of this case by the time of the next release. For now, please use one of the following work-arounds: 1. Use the CyU3PI2cReceiveBytes API instead of a DMA operation when you want to read small amounts of data. You can use the DMA read operation as you are currently doing when you want to read data that will fill the entire DMA buffer. 2. Use the "CyU3PDmaChannelSetWrapUp (&g_HandleI2cDmaCh)" from the I2cDmaIR function on receipt of a CY_U3P_I2C_EVENT_RX_DONE event. This will cause the DMA buffer to be committed and result in receipt of the DMA callback. Please let me know if you have problems/concerns with these work-arounds. With regards, Karthik |
|
|
|
嗨,伙计们,
我想在DMA模式下使用I2C作为LUMIP6。所以,我想知道这是支持在最新版本的FX3SDK? 谢谢! TEO 以上来自于百度翻译 以下为原文 Hi guys, I'm trying to use I2C in DMA mode as Lumpi6 wanted. So, I would like to know has this been supported in newest version of FX3 SDK? Thanks! Teo |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2101 浏览 1 评论
1848 浏览 1 评论
3666 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1783 浏览 6 评论
1533 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
564浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
418浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
434浏览 2评论
380浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
911浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 02:25 , Processed in 1.020763 second(s), Total 64, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号