This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好,请问CPU访问EtherCAT是按照字去访问嘛?为什么访问的时候offset要除以2呢?memcpy的时候除以了2不会减少实际传输的数据大小嘛?
void ESC_writeBlockISR(ESCMEM_ADDR *pData, uint16_t address, uint16_t len) { uint16_t wordValue; // // Create pointer to ESC Address // void * escDest = (void *)(ESC_BASE + (uint32_t)(address / 2U)); // // Determine if length (in bytes) is even or odd // if((len & 0x1U) == 0x1U) { // // Odd Length // // // Copy even bytes of buffer data to ESC memory. // Convert length to words. // memcpy(escDest, pData, (size_t)((len - 1U) >> 1U)); // // Read last 16-bit word // wordValue = ESC_readWordISR(address + (len - 1U)); // // Modify word data and set new data // wordValue &= ESC_M_MSB; wordValue |= (pData[((len - 1U) / 2U)] & ESC_M_LSB); // // Write modified value to ESC destination // ESC_writeWordISR(wordValue, (address + (len - 1U))); } else { // // Even Length // // // Copy buffer data to ESC memory. Convert length to words. // memcpy(escDest, pData, (size_t)(len >> 1U)); } }
void * escDest = (void *)(ESC_BASE + (uint32_t)(address / 2U));,我发现CPU访问ESC都是按照16bit,