{"id":21481,"date":"2022-05-27T10:35:16","date_gmt":"2022-05-27T02:35:16","guid":{"rendered":"https:\/\/hongtronics.com\/?p=21481"},"modified":"2024-07-11T11:43:00","modified_gmt":"2024-07-11T03:43:00","slug":"canbus-error-canbus-error-and-error-frame","status":"publish","type":"post","link":"https:\/\/hongtronics.com\/en\/canbus-error-canbus-error-and-error-frame\/","title":{"rendered":"CAN Bus Errors in Five Minutes - CAN Bus Errors and Error Frames (1)"},"content":{"rendered":"<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"146\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/03\/640-1024x146.gif\" alt=\"\" class=\"wp-image-19754\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/03\/640-1024x146.gif 1024w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/03\/640-300x43.gif 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/03\/640-600x86.gif 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/03\/640-768x110.gif 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p><em>A simple intro to CAN errors<\/em><\/p>\n\n\n\n<h2 class=\"has-large-font-size wp-block-heading\">CAN bus error<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">In this series of articles, we will introduce you to the details of the<strong> CAN bus error<\/strong>The knowledge includes the basic concepts of CAN Bus Errors, types of CAN Bus Errors, CAN Error Frames, and CAN Node Error States, as well as generating and documenting CAN errors through practical application testing.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color has-large-font-size wp-block-heading\">What is CAN bus error?<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">Controller Area Network (CAN) is an important standard in today's automotive and industrial automation systems. Reliability is one of the core strengths of the CAN bus protocol, making it ideal for safety-critical applications.<strong>However, it is worth noting that error handling is crucial for the robustness of CAN.<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\">CAN bus errors can occur for a variety of reasons, such as cable failures, noise, mismatched terminal resistors, CAN node failures, and more. Identifying, categorizing, and resolving such CAN errors is critical to ensuring the enduring performance of the entire CAN system. Error handling identifies and rejects erroneous messages, allowing the sender to retransmit the message. In addition, the process helps to identify and disconnect CAN nodes that are continuously transmitting erroneous messages.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/AnyConv.com__CAN\u7e3d\u7dda\u932f\u8aa4-1.jpg\" alt=\"\" class=\"wp-image-21484\"\/><\/figure>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color has-large-font-size wp-block-heading\">How CAN Error Handling Works<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">Error handling is built into the CAN standard and every CAN controller. In other words, each CAN node handles fault identification and limiting in the same way. A simple illustrative example is shown below:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"213\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1-1024x213.jpg\" alt=\"\" class=\"wp-image-21505\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1-1024x213.jpg 1024w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1-300x63.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1-600x125.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1-768x160.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa41-1.jpg 1080w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-medium-font-size\"><strong>Examples of Specific Steps<\/strong><\/p>\n\n\n\n<ol class=\"has-medium-font-size wp-block-list\"><li>CAN node 1 transmits the message to the CAN bus-and reads every bit it sends; in doing so, it finds that the bit sent explicitly is read implicitly.<\/li><li>This is a \u201cbit error\u201d where node 1 triggers an active error flag to notify the other nodes, which in effect means that node 1 sends a sequence of 6 dominant bits to the bus, and in turn, the 6 dominant bits are seen by the other nodes as a \u201cbit-fill error\u201d<\/li><li>In response, nodes 2 and 3 both trigger an active error flag, and this sequence of triggered error flags forms part of the \u201cCAN error frame\u201d.<\/li><li>CAN node 1\u201cs transmitter increases its Transmit Error Counter (TEC) by 8, CAN nodes 2 and 3 increase their Receive Error Counter (REC) by 1, and CAN node 1 automatically retransmits the message. As a result, node 1 decreases its TEC by 1, and nodes 2 and 3 decrease their REC by 1.<\/li><\/ol>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color has-large-font-size wp-block-heading\">CAN error frame<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">In the above example, the CAN node \u201ctriggers an active error flag\u201d, which creates an \u201cerror frame\u201d in response to the detected CAN error. To understand how this works, let's first look at a \u201cnormal\u201d CAN frame (no errors):<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" width=\"1024\" height=\"168\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40-1024x168.jpg\" alt=\"\" class=\"wp-image-21496\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40-1024x168.jpg 1024w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40-300x49.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40-600x98.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40-768x126.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u5e40.jpg 1080w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-medium-font-size\">Note that we have highlighted \u201cBit Fill\u201d in the CAN frame. Bit padding is a subtle but important part of the CAN standard. Basically it states that whenever a CAN node sends five bits of the same logical level (explicit or implicit), it must send one bit of the opposite level. The receiving CAN node automatically deletes this extra bit. This process helps to ensure continuous synchronization of the network.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">According to the previous example, when CAN node 1 detects an error during a CAN message transmission, it immediately transmits a 6-bit sequence of the same logic level - also known as the triggering activity error flag.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"400\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u4f4d\u586b\u5145.jpg\" alt=\"\" class=\"wp-image-21498\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u4f4d\u586b\u5145.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u4f4d\u586b\u5145-300x150.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u4f4d\u586b\u5145-600x300.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u4f4d\u586b\u5145-768x384.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-medium-font-size\">As mentioned earlier, such a sequence violates the bit-fill rule - also known as a \u201cbit-fill error\u201d. In addition, this error is visible to all CAN nodes on the network (as opposed to the \u201cbit error\u201d that caused this error flag to appear). Therefore, the addition of the error flag can be seen as a way of \u201cglobal\u201d error detection, ensuring that every CAN node is notified.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">Note that other CAN nodes treat the active error flag as a bit-fill error. In response, they will also raise an active error flag. As we will explain later, it is important to distinguish between error flags. In particular, the first error flag (from the \u201cDiscovery\u201d node) is usually called the \u201cPrimary\u201d activity error flag, while the subsequent error flags from the \u201cResponse\u201d node are called the \u201csecondary\u201d activity error flag(s).<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"200\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-\u7bc0\u9ede.jpg\" alt=\"\" class=\"wp-image-21499\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-\u7bc0\u9ede.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-\u7bc0\u9ede-300x75.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-\u7bc0\u9ede-600x150.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-\u7bc0\u9ede-768x192.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color has-large-font-size wp-block-heading\">CAN Error Frame Example<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">Example 1, 6-bit Log Error<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">Here, all CAN nodes simultaneously find an error in the CAN telegram and issue an error flag at the same time. The result is that the error flags all overlap and the total sequence of significant bits continues for a total of 6 bits. In this case, all CAN nodes consider themselves as \u201cdiscovered\u201d CAN nodes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c.jpg\" alt=\"\" class=\"wp-image-21508\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-300x300.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-100x100.jpg 100w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-600x600.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-150x150.jpg 150w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-768x768.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda6\u70ba\u932f\u8aa4\u6a19\u8a8c-700x700.jpg 700w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<p class=\"has-medium-font-size\">It was also found that this type of error frame is not very common in practice. However, it may occur due to a formatting error (e.g., the CRC delimiter is explicit rather than implicit) or a bit error encountered by the CAN transmitter during the write of the CRC field.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example 2, 12-bit Error Signs<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">In this example, CAN node 1 transmits a dominant bit, but reads it as a recessive-which means it finds a bit error. It immediately sends a sequence of 6 significant bits. The other nodes discover the bit-fill error only after reading the full 6 bits, and then they simultaneously raise the error flag to generate a sequence of the next 6 dominant bits-that is, 12 in total.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c.jpg\" alt=\"\" class=\"wp-image-21500\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-300x300.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-100x100.jpg 100w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-600x600.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-150x150.jpg 150w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-768x768.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-12\u4f4d\u932f\u8aa4\u6a19\u8a8c-700x700.jpg 700w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">Example 3, 9-digit error code<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">In this example, when CAN node 1 recognizes the bit error and starts sending 6 dominant bits, it has already sent 3 dominant bit sequences. Once halfway through the main event error flag, nodes 2 and 3 recognize the bit-fill error (due to the 3 initial dominant bits followed by the other 3 dominant bits) and begin raising their error flags. The result is that the sequence of dominant bits from the error flag becomes 9 bits long.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c.jpg\" alt=\"\" class=\"wp-image-21501\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-300x300.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-100x100.jpg 100w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-600x600.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-150x150.jpg 150w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-768x768.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN-9\u4f4d\u932f\u8aa4\u6a19\u8a8c-700x700.jpg 700w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n<\/div>\n\n\n<p class=\"has-medium-font-size\">The above logic for triggering error flags is reflected in what we call \u201cactive\u201d CAN error frames. Note in particular how the secondary error flags triggered by each node overlap each other - and how the primary and secondary flags may also overlap. The result is that the primary bit sequence from which the error flag is triggered may be 6 to 12 bits long.<\/p>\n\n\n\n<p class=\"has-medium-font-size\">The sequence is always terminated by a sequence of 8 hidden bits that mark the end of the error frame. In practice, the active error frame may \u201cstart\u201d at a different position in the wrong CAN frame, depending on when the error is detected. However, the result will be the same: all nodes discard the erroneous CAN frame, and the sending node can attempt to retransmit the failed message.<\/p>\n\n\n\n<h2 class=\"has-vivid-cyan-blue-color has-text-color has-large-font-size wp-block-heading\">Passive error flag<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">If a CAN node has changed from its default \u201cactive\u201d state to \u201cpassive\u201d, it will only trigger the so-called \u201cpassive error flag\u201d. The passive error flag is a sequence of 6 implicit bits. In this case, it is relevant to distinguish between passive error flags triggered by the sending node and the receiving node.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example 4, Transmitter is a passive error.<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">As shown in the figure, if a transmitter (e.g. CAN node 1 in our example) triggers a passive error flag (e.g. Response Bit Error), this corresponds to a continuous sequence of 6 hidden bits. This in turn is detected as a bit-fill error by all CAN nodes. Assuming that the other CAN nodes are still active with their errors, they will trigger an active error flag for the 6 dominant bits. In other words, the passive transmitter can still \u201ccommunicate\u201d that the CAN frame is wrong.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4.jpg\" alt=\"\" class=\"wp-image-21502\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-300x300.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-100x100.jpg 100w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-600x600.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-150x150.jpg 150w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-768x768.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u767c\u9001\u5668\u662f\u88ab\u52d5\u932f\u8aa4-700x700.jpg 700w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Example 5, Receiver is Active Error<\/h2>\n\n\n\n<p class=\"has-medium-font-size\">Conversely, if the receiver generates a passive error flag, this is effectively \u201cinvisible\u201d to all other CAN nodes on the bus (since any dominant bit is better than a sequence of recessive bits). In practice, this means that the error passive receiver no longer has the ability to corrupt frames transmitted by other CAN nodes.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4.jpg\" alt=\"\" class=\"wp-image-21503\" srcset=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4.jpg 800w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-300x300.jpg 300w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-100x100.jpg 100w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-600x600.jpg 600w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-150x150.jpg 150w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-768x768.jpg 768w, https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u63a5\u6536\u5668\u662f\u88ab\u52d5\u932f\u8aa4-700x700.jpg 700w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><\/figure>\n\n\n\n<h2 class=\"has-text-align-center wp-block-heading\">\uff5eFollow us to get more technical knowledge.<\/h2>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Honghong Electronics provides hardware devices such as CAN cards, CAN data loggers, data acquisition modules, CAN gateways and converters, as well as software such as the Kvaser CANLIB SDK.<\/strong>Deep technical accumulation and excellent technical service ability is the reason why many customers choose Hongke, welcome to contact us at any time!<\/p>\n\n\n\n<hr class=\"wp-block-separator has-css-opacity is-style-default\"\/>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/01\/\u5b8f\u8679\u8cc7\u8a0a\u5361-1024x576.png\" alt=\"\" class=\"wp-image-17585\"\/><figcaption>Contact Us<\/figcaption><\/figure>","protected":false},"excerpt":{"rendered":"<p>A simple intro to CAN errors CAN \u7e3d\u7dda\u932f\u8aa4 \u5728\u672c\u7cfb\u5217\u6587\u7ae0\u4e2d\uff0c\u6211\u5011\u5c07\u70ba\u60a8\u8a73\u7d30\u4ecb\u7d39 [&hellip;]<\/p>","protected":false},"author":29,"featured_media":21520,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"0","ocean_second_sidebar":"0","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"minimal","ocean_center_header_left_menu":"0","ocean_custom_header_template":"0","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"0","ocean_menu_typo_font_family":"0","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"0","iawp_total_views":1653,"ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"off","ocean_gallery_id":[],"footnotes":""},"categories":[2315,2293],"tags":[1680],"table_tags":[],"class_list":["post-21481","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-2315","category-can-lin","tag-can","entry","has-media","owp-thumbs-layout-horizontal","owp-btn-normal","owp-tabs-layout-horizontal","has-no-thumbnails","has-product-nav"],"aioseo_notices":[],"jetpack_featured_media_url":"https:\/\/hongtronics.com\/wp-content\/uploads\/2022\/05\/CAN\u7e3d\u7dda\u932f\u8aa4-1.jpg","_links":{"self":[{"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/posts\/21481","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/comments?post=21481"}],"version-history":[{"count":5,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/posts\/21481\/revisions"}],"predecessor-version":[{"id":24965,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/posts\/21481\/revisions\/24965"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/media\/21520"}],"wp:attachment":[{"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/media?parent=21481"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/categories?post=21481"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/tags?post=21481"},{"taxonomy":"table_tags","embeddable":true,"href":"https:\/\/hongtronics.com\/en\/wp-json\/wp\/v2\/table_tags?post=21481"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}