Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

DFRobot_IICSerial

This is an IIC to dual UART module with 1Mbps IIC transmission rate, and each sub UART is able to receive/transmit independent 256 bytes FIFO hardware cache. It can be used in the applications requiring the transmission of large amounts of data.
The band rate, word length, and check format of every sub UART can be set independently. The module can provide at most 2Mbps communication rate, and support 4 IIC addresses. Four such modules can be connected to one controller board to expand 8 hardware serial port.

产品效果图

SKU: DFR0627

Table of Contents

Summary

  1. Setup band rate
  2. Read serial data
  3. Write serial data

Installation

To use this library, first download the library file, paste it into the \Arduino\libraries directory, then open the examples folder and run the demo in the folder.

Methods

/** * @fn DFRobot_IICSerial * @brief Constructor * @param pWire I2C bus pointer object, default Wire * @param subUartChannel sub UART channel, WK2132 has two sub UARTs: SUBUART_CHANNEL_1 or SUBUART_CHANNEL_2 * @param IA1 corresponds with IA1 Level(0 or 1) of DIP switch on the module, and is used for configuring  * @n the IIC address of the 6th bit value(default: 1). * @n @Parameter IA0 corresponds with IA0 Level(0 or 1) of DIP switch on the module, and is used for configuring * @n IIC address of the 5th bit value(default: 1). * @n IIC address configuration:  * @n 7 6 5 4 3 2 1 0 * @n 0 IA1 IA0 1 0 C1 C0 0/1 * @n IIC address only has 7 bits, while there are 8 bits for one byte, so the extra one bit will be filled as 0.  * @n The 6th bit corresponds with IA1 Level of DIP switch, can be configured manually. * @n The 5th bit corresponds with IA0 Level of DIP switch, can be configured manually.  * @n The 4th and 3rd bits are fixed, value 1 and 0 respectively. * @n The values of the 2nd and 1st bits are the sub UART channels, 00 for sub UART 1, 01 for sub UART 2.  * @n The 0 bit represents the operation object: 0 for register, 1 for FIFO cache.*/DFRobot_IICSerial(TwoWire &wire = Wire, uint8_t subUartChannel = SUBUART_CHANNEL_1, uint8_tIA1 = 1, uint8_tIA0 = 1);
~DFRobot_IICSerial();
/** * @fn begin * @brief Init function, set band rate of sub UART * @param baud Band rate * @n Besides the commonly-used 9600, 57600, 115200, it also supports:  * @n 2400, 4800, 7200, 14400, 19200, 28800, 38400, 76800, 153600, 230400, 460800, 307200, 921600 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud){returnbegin(baud, IICSerial_8N1, eNormalMode, eNormal);}
/** * @fn begin * @brief Init function, set sub UART band rate, data format  * @param baud Band rate * @param format Data format: IICSerial_8N1, IICSerial_8N2, IICSerial_8Z1 * @n IICSerial_8Z2, IICSerial_8O1, IICSerial_8O2, IICSerial_8E1, IICSerial_8E2 * @n IICSerial_8F1, IICSerial_8F2 * @return Return 0 if it succeeds, otherwise return non-zero */intbegin(longunsigned baud, uint8_t format){returnbegin(baud, format, eNormalMode, eNormal);}
/** * @fn end * @brief Release sub UART to clean up all registers in Sub UART. Call function begin() again to make it work.*/voidend();
/** * @fn available * @brief Get the number of bytes in receive buffer, it should be the total number of bytes in FIFO * @n receive buffer(256B) and self-defined _rx_buffer(31B). * @return Return the number of bytes in receive buffer*/virtualintavailable(void);
/** * @fn peek * @brief Return the data of 1 byte without deleting the data in the receive buffer * @return Return the readings*/virtualintpeek(void);
/** * @fn read * @brief Read 1 byte in receive buffer, this operation will delete the data in the buffer. * @return Return the readings*/virtualintread(void);
/** * @fn read * @brief Read a specified number of character from FIFO and store them into a array.  * @n This operation doesn't involve receive buffer.  * @param pBuf Array for storing data  * @param size The number of character to be read * @return Return the readings*/size_tread(void *pBuf, size_t size);
/** * @fn flush * @brief Wait for the data to be transmited completely*/virtualvoidflush(void);
/** * @fn write * @brief Write one byte into transmit FIFO cache.The following are the overload functions of the byte of different data type.  * @param n data to be written * @return Return 0 if it succeeds, otherwise return -1*/virtualsize_twrite(uint8_t n);
inlinesize_twrite(unsignedlong n) { returnwrite((uint8_t)n); }
inlinesize_twrite(long n) { returnwrite((uint8_t)n); }
inlinesize_twrite(unsignedint n) { returnwrite((uint8_t)n); }
inlinesize_twrite(int n) { returnwrite((uint8_t)n); }
/** * @fn write * @brief Write data into transmit FIFO cache * @param pBuf Store buffer for the data to be read * @param size Length of the data to be read * @return Output the number of bytes*/virtualsize_twrite(constuint8_t *pBuf, size_t size);

Compatibility

MCUWork WellWork WrongUntestedRemarks
Arduino Uno
Mega2560
Leonardo
ESP32
micro:bit

History

  • 2019/08/07 - Version 1.0.0 released.

Credits

Written by Arya(xue.peng@dfrobot.com), 2019. (Welcome to our website)

About

No description or website provided.

Topics

Resources

Stars

8 stars

Watchers

10 watching

Forks

Releases

Packages

Contributors

Languages