{"id":36205,"date":"2026-01-30T09:04:24","date_gmt":"2026-01-30T09:04:24","guid":{"rendered":"https:\/\/imperix.com\/doc\/?p=36205"},"modified":"2026-03-11T14:53:04","modified_gmt":"2026-03-11T14:53:04","slug":"ssi-digital-encoder-input","status":"publish","type":"post","link":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input","title":{"rendered":"SSI &#8211; Digital encoder input"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 ez-toc-wrap-right-text counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#SSI-protocol-in-a-nutshell\" >SSI protocol in a nutshell<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Strengths-and-limitations\" >Strengths and limitations<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Simulink-block\" >Simulink block<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Signal-specification\" >Signal specification<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Parameters\" >Parameters<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#PLECS-block\" >PLECS block<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Signal-specification-2\" >Signal specification<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#Parameters-2\" >Parameters<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\/#C-functions\" >C++ functions<\/a><\/li><\/ul><\/nav><\/div>\n\n<p>The SSI block instantiates a Synchronous Serial Interface (SSI) master to communicate with SSI-compatible digital encoders and similar digital sensors, typically in motor drive applications.<\/p>\n\n\n\n<p>This block is only compatible with the B-Box4, which provides two RS-485-based serial ports (SERIAL A and SERIAL B). Both ports can interface with sensors using three widely adopted communication protocols: SSI (this page), <a href=\"https:\/\/imperix.com\/doc\/software\/biss-angle-encoder-input\">BiSS-C<\/a> and <a href=\"https:\/\/imperix.com\/doc\/software\/endat-digital-encoder-input\">EnDat2.2<\/a>.<\/p>\n\n\n\n<p>Along with the single-turn position, this block supports the reception of a multi-turn counter and follows the common assumption that the single-turn and multi-turn values are placed side by side in the frame received from the sensor, as illustrated below.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"16384\" height=\"2637\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/ssi_frame-Page-2.png\" alt=\"\" class=\"wp-image-36562\" style=\"width:659px;height:auto\"\/><figcaption class=\"wp-element-caption\">SSI frame with multi-turn and single-turn data side by side, as assumed by the SSI block.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>As the SSI protocol does not define separate versions, this driver is compatible with any sensor that uses binary-encoded SSI. Gray encoding is currently not supported.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"SSI-protocol-in-a-nutshell\"><\/span>SSI protocol in a nutshell<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The SSI protocol is a master-slave serial interface standard created by Max Stegmann GmbH in 1984. Nowadays, it is widely used in industrial applications. Designed for a single master and a single slave, the SSI protocol creates a direct, point-to-point communication link.<\/p>\n\n\n\n<p>The interface is composed of two unidirectional signals, CLOCK (driven by the master) and DATA (driven by the slave), regardless of the resolution (i.e., number of bits per revolution) of the sensor. Differential signaling improves the noise immunity and allows for longer cable runs, making it suitable for industrial environments.<\/p>\n\n\n\n<p>The transmission of a frame starts when the controller (master) starts the CLOCK. Then, the sensor (slave) sends back the data \u2013 usually the encoder position \u2013 bit by bit on DATA, synchronously with the CLOCK. The transmission ends by the time-out (DATA signal maintained to LOW by the slave) and the pause (mandatory idle state before the next transmission starts).<\/p>\n\n\n\n<div class=\"wp-block-simple-alerts-for-gutenberg-alert-boxes sab-alert sab-alert-info\" role=\"alert\">While the SSI standard defines how the clock and data signals are exchanged between the master and the slave, it does <em>not<\/em> specify the frame structure. The content of the frame may therefore vary from one sensor to another.<br><br>The angle within the current rotation is usually called <strong>single-turn position<\/strong>. Most digital encoders also offer the capability to track the number of rotations, usually referred to as <strong>multi-turn counter<\/strong>.<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Strengths-and-limitations\"><\/span>Strengths and limitations<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p>The SSI protocol is valued for its simple and robust design. With only two differential digital lines, it can be easily integrated and performs reliably even in electrically noisy environments. The synchronous data transfer provides accurate, low-latency position feedback, making it well suited for real-time control.<br><br>On the downside, SSI is a one-way protocol with no automatic configuration or diagnostic capability. The master must know the frame structure of the sensor, and the maximum cable length decreases as the clock frequency increases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Simulink-block\"><\/span>Simulink block<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Signal-specification\"><\/span>Signal specification<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<ul class=\"wp-block-list\">\n<li>The \u03b8 output  is the single-turn position, in radians, in [0, 2\u03c0].<\/li>\n\n\n\n<li>The <code>cnt<\/code> output is the multi-turn counter, as received from the sensor. This port is hidden by default but it can be shown using the&nbsp;<code>Output multi-turn counter<\/code>&nbsp;checkbox.<\/li>\n\n\n\n<li>The <code>v<\/code> output is the data valid signal, set to 1 each time a new data are available.<\/li>\n\n\n\n<li>The&nbsp;<code>sim<\/code> input is a 2-dimensional vector used in simulation and represents the angle value (in radians) and multi-turn counter (-) computed by the simulation plant model.<\/li>\n\n\n\n<li>The&nbsp;<code>&gt;<\/code>&nbsp;input signal needs to be connected to the sampling clock generated by the&nbsp;<a href=\"https:\/\/imperix.com\/doc\/software\/config-control-task-configuration\">CONFIG block<\/a>.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"791\" height=\"448\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-32.png\" alt=\"\" class=\"wp-image-36977\" style=\"width:150px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-32.png 791w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-32-300x170.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-32-768x435.png 768w\" sizes=\"auto, (max-width: 791px) 100vw, 791px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Parameters\"><\/span>Parameters<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Device ID<\/code>&nbsp;selects which device to address when used in a multi-device configuration.<\/li>\n\n\n\n<li><code>Serial port<\/code> selects the serial port.<\/li>\n\n\n\n<li><code>Clock frequency<\/code> specifies the transmission clock frequency for the SSI communication, in MHz. The clock frequency cannot exceed 2 MHz, as defined by the SSI standard.<\/li>\n\n\n\n<li><code>Direction<\/code> specifies the direction as clockwise or counterclockwise. When counterclockwise is selected, the output angle \u03b8 is 2\u03c0-\u03b8&#8217;, where \u03b8&#8217; is the angle received from the sensor.<\/li>\n\n\n\n<li><code>Single-turn resolution<\/code> specifies the resolution (i.e., number of bits) for the single-turn position. The single-turn resolution cannot exceed 32 bits.<\/li>\n\n\n\n<li><code>Multi-turn resolution<\/code> specifies the resolution (i.e., number of bits) for the multi-turn counter. The multi-turn resolution cannot exceed 32 bits.<\/li>\n\n\n\n<li><code>Additional first clock delay<\/code> specifies the delay, in us, added to the first half clock period.<\/li>\n\n\n\n<li><code>Pause delay<\/code> specifies the duration, in us, of the recovery time after each transmission.<\/li>\n\n\n\n<li><code>Output multi-turn counter<\/code> shows or hides the multi-turn counter output <code>cnt<\/code>.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"559\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-45.png\" alt=\"\" class=\"wp-image-37001\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-45.png 424w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-45-228x300.png 228w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"559\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-34.png\" alt=\"\" class=\"wp-image-36981\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-34.png 424w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-34-228x300.png 228w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"424\" height=\"559\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-35.png\" alt=\"\" class=\"wp-image-36982\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-35.png 424w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-35-228x300.png 228w\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"PLECS-block\"><\/span>PLECS block<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Signal-specification-2\"><\/span>Signal specification<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:66.66%\">\n<ul class=\"wp-block-list\">\n<li>The \u03b8 output  is the single-turn position, in radians, in [0, 2\u03c0].<\/li>\n\n\n\n<li>The <code>cnt<\/code> output is the multi-turn counter, as received from the sensor. This port is hidden by default but it can be shown using the&nbsp;<code>Output multi-turn counter<\/code>&nbsp;checkbox.<\/li>\n\n\n\n<li>The <code>v<\/code> output is the data valid signal, set to 1 each time a new data are available.<\/li>\n\n\n\n<li>The&nbsp;<code>sim<\/code> input is a 2-dimensional vector used in simulation and represents the angle value (in radians) and multi-turn counter (-) computed by the simulation plant model. This input is visible in the parent level.<\/li>\n\n\n\n<li>The&nbsp;<code>&gt;<\/code>&nbsp;input signal needs to be connected to the sampling clock generated by the&nbsp;<a href=\"https:\/\/imperix.com\/doc\/software\/config-control-task-configuration\">CONFIG block<\/a>.<\/li>\n<\/ul>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\" style=\"flex-basis:33.33%\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"799\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-36-1024x799.png\" alt=\"\" class=\"wp-image-36983\" style=\"width:150px\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-36-1024x799.png 1024w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-36-300x234.png 300w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-36-768x599.png 768w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-36.png 1419w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Parameters-2\"><\/span>Parameters<span class=\"ez-toc-section-end\"><\/span><\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>Device ID<\/code>&nbsp;selects which device to address when used in a multi-device configuration.<\/li>\n\n\n\n<li><code>Serial port<\/code> selects the serial port.<\/li>\n\n\n\n<li><code>Clock frequency<\/code> specifies the transmission clock frequency for the SSI communication, in MHz. The clock frequency cannot exceed 2 MHz, as defined by the SSI standard.<\/li>\n\n\n\n<li><code>Direction<\/code> specifies the direction as clockwise or counterclockwise. When counterclockwise is selected, the output angle \u03b8 is 2\u03c0-\u03b8&#8217;, where \u03b8&#8217; is the angle received from the sensor.<\/li>\n\n\n\n<li><code>Single-turn resolution<\/code> specifies the resolution (i.e., number of bits) for the single-turn position. The single-turn resolution cannot exceed 32 bits.<\/li>\n\n\n\n<li><code>Multi-turn resolution<\/code> specifies the resolution (i.e., number of bits) for the multi-turn counter. The multi-turn resolution cannot exceed 32 bits.<\/li>\n\n\n\n<li><code>Additional first clock delay<\/code> specifies the delay, in us, added to the first half clock period.<\/li>\n\n\n\n<li><code>Pause delay<\/code> specifies the duration, in us, of the recovery time after each transmission.<\/li>\n\n\n\n<li><code>Output multi-turn counter<\/code> shows or hides the multi-turn counter output <code>cnt<\/code>.<\/li>\n<\/ul>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"350\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-37.png\" alt=\"\" class=\"wp-image-36984\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-37.png 342w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-37-293x300.png 293w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"350\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-40.png\" alt=\"\" class=\"wp-image-36987\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-40.png 342w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-40-293x300.png 293w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"350\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-38.png\" alt=\"\" class=\"wp-image-36985\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-38.png 342w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-38-293x300.png 293w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"350\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-41.png\" alt=\"\" class=\"wp-image-36988\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-41.png 342w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-41-293x300.png 293w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\"><div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"342\" height=\"350\" src=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-39.png\" alt=\"\" class=\"wp-image-36986\" srcset=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-39.png 342w, https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/11\/image-39-293x300.png 293w\" sizes=\"auto, (max-width: 342px) 100vw, 342px\" \/><\/figure>\n<\/div><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"C-functions\"><\/span>C++ functions<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n<style>.kt-accordion-id36205_15057b-6e .kt-accordion-inner-wrap{column-gap:var(--global-kb-gap-md, 2rem);row-gap:1px;}.kt-accordion-id36205_15057b-6e .kt-accordion-panel-inner{border-top:2px solid transparent;border-right:2px solid transparent;border-bottom:2px solid transparent;border-left:2px solid transparent;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px;background:#ffffff;padding-top:20px;padding-right:20px;padding-bottom:20px;padding-left:20px;}.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:2px solid #f2f2f2;border-right:2px solid #f2f2f2;border-bottom:2px solid #f2f2f2;border-left:2px solid #f2f2f2;border-top-left-radius:2px;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:2px;background:#ffffff;font-size:16px;line-height:24px;letter-spacing:0px;font-weight:bold;text-transform:none;color:var(--global-palette3, #1A202C);padding-top:12px;padding-right:10px;padding-bottom:8px;padding-left:16px;}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap .kt-blocks-accordion-icon-trigger:before{background:var(--global-palette3, #1A202C);}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-icon-trigger{background:var(--global-palette3, #1A202C);}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-icon-trigger:before{background:#ffffff;}.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e .kt-blocks-accordion-header:focus-visible{color:#444444;background:#ffffff;border-top:2px solid #eeeeee;border-right:2px solid #eeeeee;border-bottom:2px solid #eeeeee;border-left:2px solid #eeeeee;}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:before, body:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-blocks-accordion--visible .kt-blocks-accordion-icon-trigger:after, body:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle ) .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:before{background:#444444;}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger, body:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger{background:#444444;}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:hover .kt-blocks-accordion-icon-trigger:before, body:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:after, body:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible .kt-blocks-accordion-icon-trigger:before{background:#ffffff;}.kt-accordion-id36205_15057b-6e .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{color:var(--global-palette3, #1A202C);background:var(--global-palette9, #ffffff);border-top:2px solid var(--global-palette6, #718096);border-right:2px solid var(--global-palette6, #718096);border-bottom:2px solid var(--global-palette6, #718096);border-left:2px solid var(--global-palette6, #718096);}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basiccircle ):not( .kt-accodion-icon-style-xclosecircle ):not( .kt-accodion-icon-style-arrowcircle )  > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:before{background:var(--global-palette3, #1A202C);}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger{background:var(--global-palette3, #1A202C);}.kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:after, .kt-accordion-id36205_15057b-6e:not( .kt-accodion-icon-style-basic ):not( .kt-accodion-icon-style-xclose ):not( .kt-accodion-icon-style-arrow ) .kt-blocks-accordion-header.kt-accordion-panel-active .kt-blocks-accordion-icon-trigger:before{background:var(--global-palette9, #ffffff);}@media all and (max-width: 1024px){.kt-accordion-id36205_15057b-6e .kt-accordion-panel-inner{border-top:2px solid transparent;border-right:2px solid transparent;border-bottom:2px solid transparent;border-left:2px solid transparent;}}@media all and (max-width: 1024px){.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:2px solid #f2f2f2;border-right:2px solid #f2f2f2;border-bottom:2px solid #f2f2f2;border-left:2px solid #f2f2f2;}}@media all and (max-width: 1024px){.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e .kt-blocks-accordion-header:focus-visible{border-top:2px solid #eeeeee;border-right:2px solid #eeeeee;border-bottom:2px solid #eeeeee;border-left:2px solid #eeeeee;}}@media all and (max-width: 1024px){.kt-accordion-id36205_15057b-6e .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{border-top:2px solid var(--global-palette6, #718096);border-right:2px solid var(--global-palette6, #718096);border-bottom:2px solid var(--global-palette6, #718096);border-left:2px solid var(--global-palette6, #718096);}}@media all and (max-width: 767px){.kt-accordion-id36205_15057b-6e .kt-accordion-inner-wrap{display:block;}.kt-accordion-id36205_15057b-6e .kt-accordion-inner-wrap .kt-accordion-pane:not(:first-child){margin-top:1px;}.kt-accordion-id36205_15057b-6e .kt-accordion-panel-inner{border-top:2px solid transparent;border-right:2px solid transparent;border-bottom:2px solid transparent;border-left:2px solid transparent;}.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header{border-top:2px solid #f2f2f2;border-right:2px solid #f2f2f2;border-bottom:2px solid #f2f2f2;border-left:2px solid #f2f2f2;}.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header:hover, \n\t\t\t\tbody:not(.hide-focus-outline) .kt-accordion-id36205_15057b-6e .kt-blocks-accordion-header:focus-visible{border-top:2px solid #eeeeee;border-right:2px solid #eeeeee;border-bottom:2px solid #eeeeee;border-left:2px solid #eeeeee;}.kt-accordion-id36205_15057b-6e .kt-accordion-header-wrap .kt-blocks-accordion-header:focus-visible,\n\t\t\t\t.kt-accordion-id36205_15057b-6e > .kt-accordion-inner-wrap > .wp-block-kadence-pane > .kt-accordion-header-wrap > .kt-blocks-accordion-header.kt-accordion-panel-active{border-top:2px solid var(--global-palette6, #718096);border-right:2px solid var(--global-palette6, #718096);border-bottom:2px solid var(--global-palette6, #718096);border-left:2px solid var(--global-palette6, #718096);}}<\/style>\n<div class=\"wp-block-kadence-accordion alignnone\"><div class=\"kt-accordion-wrap kt-accordion-id36205_15057b-6e kt-accordion-has-29-panes kt-active-pane-0 kt-accordion-block kt-pane-header-alignment-left kt-accodion-icon-style-arrow kt-accodion-icon-side-left\" style=\"max-width:none\"><div class=\"kt-accordion-inner-wrap\" data-allow-multiple-open=\"false\" data-start-open=\"none\">\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-2 kt-pane36205_50938f-6b\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code><code>Ssi_Init<\/code> <\/code><strong>\u2014 <\/strong>Initialize the SSI master<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp shcb-wrap-lines\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_Init<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Initializes a given serial port (A or B) for SSI communication protocol.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to initialize (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-16 kt-pane36205_db4ab0-fc\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ConfigureClkFrequency<\/code> \u2014 Configure the transmission clock frequency<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ConfigureClkFrequency<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">float<\/span> clk_frequency, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configures the SSI clock speed for a given serial port (A or B), in MHz.<\/p>\n\n\n\n<p> The clock frequency should not exceed 2 MHz, as defined by the SSI standard.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>clk_frequency<\/code>: the SSI clock frequency, in MHz<\/li>\n\n\n\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>:&nbsp;the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-20 kt-pane36205_7aa599-84\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ConfigureDirection<\/code> \u2014 Configure the rotation direction<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ConfigureDirection<\/span><span class=\"hljs-params\">(tRs485Direction direction, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configures the angular direction (<em>clockwise<\/em>&nbsp;or&nbsp;<em>counterclockwise<\/em>) of the SSI communication protocol for a given serial port (A or B). If&nbsp;<em>counterclockwise<\/em>&nbsp;is selected, the output angle \u03b8 is 2\u03c0-\u03b8\u2019, where \u03b8\u2019 is the angle received from the sensor.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>direction<\/code>:&nbsp;the angular direction (RS485_CW or RS485_CCW)<\/li>\n\n\n\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-21 kt-pane36205_c9d802-12\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ConfigurePayload<\/code> \u2014 Configure the frame payload<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ConfigurePayload<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> short n_bit_before, <span class=\"hljs-keyword\">unsigned<\/span> short n_bit_multiturn, <span class=\"hljs-keyword\">unsigned<\/span> short n_bit_singleturn, <span class=\"hljs-keyword\">unsigned<\/span> short n_bit_after, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configures the SSI frame structure, as expected to be received from the sensor. The frame structure considers that the single-turn and multi-turn values are placed side by side in the frame received from the sensor.<\/p>\n\n\n\n<p>The single-turn and multi-turn resolution fields are each limited to 32 bits, with a maximum payload length of 64 bits (i.e., n_bit_before + n_bit_multiturn + n_bit_singleturn + n_bit_after \u2264 64).<\/p>\n\n\n\n<p>The <code>n_bit_before<\/code> and <code>n_bit_after<\/code> fields accommodate sensors that include auxiliary bits surrounding the position data. Correctly configuring these parameters ensures proper alignment of the position data and avoid bit-shifted readings.<\/p>\n\n\n\n<p>For instance, an E36CM-SSI-1211-1012 (Hohner) encoder, which transmits a leading bit before the 12-bit multi-turn and 10-bit single-turn values, is configured using <code>Ssi_ConfigurePayload(1, 12, 10, 0, &lt;port&gt;, &lt;device&gt;)<\/code>.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p><strong>Parameters<\/strong><\/p>\n\n\n\n<ul id=\"block-f4b9bced-e6ca-4452-bb01-d89dc21729e6\" class=\"wp-block-list\">\n<li><code>n_bit_before<\/code>: the number of leading bits in the frame<\/li>\n\n\n\n<li><code>n_bit_multiturn<\/code>: the multi-turn resolution (number of bits of the multi-turn counter)<\/li>\n\n\n\n<li><code>n_bit_singleturn<\/code>: the single-turn resolution (number of bits of the single-turn position)<\/li>\n\n\n\n<li><code>n_bit_after<\/code>: the number of trailing bits in the frame<\/li>\n\n\n\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-22 kt-pane36205_c46b0a-cf\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ConfigureAdditionalFirstClockDelay<\/code> \u2014 Configure the additional delay<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ConfigureAdditionalFirstClockDelay<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">float<\/span> delay, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configures delay, in us, to be added to the first half clock period sent by the master to the slave when starting a new transmission.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>delay<\/code>: the delay added to the first half clock period, in us<\/li>\n\n\n\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-23 kt-pane36205_707538-0c\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ConfigurePauseDelay<\/code> \u2014 Configure the pause delay<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ConfigurePauseDelay<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">float<\/span> delay, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Configures the duration, in us, of the recovery time after each transmission.<\/p>\n\n\n\n<p>Can only be called in&nbsp;<code>UserInit()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>delay<\/code>: the recovery time after each transmission, in us<\/li>\n\n\n\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-24 kt-pane36205_ba8835-17\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ReadFrame<\/code> \u2014 Read the current frame<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ReadFrame<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Reads and interprets the latest SSI frame received from the sensor.<\/p>\n\n\n\n<p>Can only be called in&nbsp;the interrupt routine.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-25 kt-pane36205_0368cd-ae\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_GetPosition<\/code> \u2014 Get the sensor&#8217;s position<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">float<\/span> <span class=\"hljs-title\">Ssi_GetPosition<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Returns the single-turn position received from the sensor as an angle, in radians within [0, 2\u03c0].<\/p>\n\n\n\n<p>Can only be called in&nbsp;the interrupt routine, after&nbsp;<code>Ssi_ReadFrame()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n\n\n\n<p><strong>Return value<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Returns the single-turn position in radians within [0, 2\u03c0].<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-27 kt-pane36205_4415bb-ce\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_GetMultiturnCounter<\/code> \u2014 Get the sensor&#8217;s multi-turn counter<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-9\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">Ssi_GetMultiturnCounter<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-9\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Returns the multi-turn counter received from the sensor.<\/p>\n\n\n\n<p>Can only be called in&nbsp;the interrupt routine, after&nbsp;<code>Ssi_ReadFrame()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n\n\n\n<p><strong>Return value<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Returns the multi-turn counter.<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-26 kt-pane36205_b274bc-e5\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_GetDataValid<\/code> \u2014 Get the data valid flag<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-10\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> <span class=\"hljs-title\">Ssi_GetDataValid<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-10\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Returns the data valid flag, which indicates whether new sensor data has been received. A value of 1 means the single-turn position and the multi-turn counter were updated since last interruption. A value of 0 indicates that no new data was received and the previous values have been retained.<\/p>\n\n\n\n<p>Can only be called in&nbsp;the interrupt routine, after&nbsp;<code>Ssi_ReadFrame()<\/code>.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n\n\n\n<p id=\"CANinputmailbox-Returnvalue.1\"><strong>Return value<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Returns <strong>1<\/strong> if the single-turn position and multi-turn counter have been updated since the last interrupt; returns <strong>0<\/strong> if the outputs remain unchanged.<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-kadence-pane kt-accordion-pane kt-accordion-pane-29 kt-pane36205_384258-d3\"><div class=\"kt-accordion-header-wrap\"><button class=\"kt-blocks-accordion-header kt-acccordion-button-label-show\" type=\"button\"><span class=\"kt-blocks-accordion-title-wrap\"><span class=\"kt-blocks-accordion-title\"><code>Ssi_ErrorCheck<\/code> \u2014 Raise warning in case of communication error<\/span><\/span><span class=\"kt-blocks-accordion-icon-trigger\"><\/span><\/button><\/div><div class=\"kt-accordion-panel kt-accordion-panel-hidden\"><div class=\"kt-accordion-panel-inner\"><pre class=\"wp-block-code\" aria-describedby=\"shcb-language-11\" data-shcb-language-name=\"C++\" data-shcb-language-slug=\"cpp\"><span><code class=\"hljs language-cpp\"><span class=\"hljs-function\"><span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Ssi_ErrorCheck<\/span><span class=\"hljs-params\">(<span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> port, <span class=\"hljs-keyword\">unsigned<\/span> <span class=\"hljs-keyword\">int<\/span> device)<\/span><\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-11\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">C++<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">cpp<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Checks the communication status and raises warnings in the logs in Cockpit in case of communication error(s).<\/p>\n\n\n\n<p>Can only be called in&nbsp;the interrupt routine.<\/p>\n\n\n\n<p id=\"SVPWMSpacevectorPWM-Parameters.1\"><strong>Parameters<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>port<\/code>: the serial port to configure (0 for Port A, 1 for Port B)<\/li>\n\n\n\n<li><code>device<\/code>: the ID of the addressed device (optional, used in multi-device configuration only)<\/li>\n<\/ul>\n<\/div><\/div><\/div>\n<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>The SSI block instantiates a Synchronous Serial Interface (SSI) master to communicate with SSI-compatible digital encoders and similar digital sensors, typically in motor drive applications&#8230;.<\/p>\n","protected":false},"author":17,"featured_media":33315,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"categories":[16],"tags":[18],"software-environments":[105,103,104],"provided-results":[],"related-products":[50,32,51,114],"guidedreadings":[],"tutorials":[],"user-manuals":[],"coauthors":[82],"class_list":["post-36205","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-motor-drives","software-environments-c-plus-plus","software-environments-matlab","software-environments-plecs","related-products-acg-sdk","related-products-b-box-rcp","related-products-cpp-sdk","related-products-motor"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SSI - Digital encoder input - imperix<\/title>\n<meta name=\"description\" content=\"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SSI - Digital encoder input - imperix\" \/>\n<meta property=\"og:description\" content=\"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input\" \/>\n<meta property=\"og:site_name\" content=\"imperix\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T09:04:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-11T14:53:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png\" \/>\n\t<meta property=\"og:image:width\" content=\"500\" \/>\n\t<meta property=\"og:image:height\" content=\"334\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Fran\u00e7ois Ledent\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fran\u00e7ois Ledent\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input\"},\"author\":{\"name\":\"Fran\u00e7ois Ledent\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/1a0c3f44c7b64b1fd38dec245646aa8c\"},\"headline\":\"SSI &#8211; Digital encoder input\",\"datePublished\":\"2026-01-30T09:04:24+00:00\",\"dateModified\":\"2026-03-11T14:53:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input\"},\"wordCount\":1783,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/software.png\",\"keywords\":[\"Motor drives\"],\"articleSection\":[\"Software reference\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input\",\"name\":\"SSI - Digital encoder input - imperix\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/software.png\",\"datePublished\":\"2026-01-30T09:04:24+00:00\",\"dateModified\":\"2026-03-11T14:53:04+00:00\",\"description\":\"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#primaryimage\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/software.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/software.png\",\"width\":500,\"height\":334},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/software\\\/ssi-digital-encoder-input#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Knowledge base\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Software reference\",\"item\":\"https:\\\/\\\/imperix.com\\\/doc\\\/category\\\/software\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"SSI &#8211; Digital encoder input\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#website\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\",\"name\":\"imperix\",\"description\":\"power electronics\",\"publisher\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/imperix.com\\\/doc\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#organization\",\"name\":\"imperix\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/imperix_logo.png\",\"contentUrl\":\"https:\\\/\\\/imperix.com\\\/doc\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/imperix_logo.png\",\"width\":350,\"height\":120,\"caption\":\"imperix\"},\"image\":{\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/imperix.com\\\/doc\\\/#\\\/schema\\\/person\\\/1a0c3f44c7b64b1fd38dec245646aa8c\",\"name\":\"Fran\u00e7ois Ledent\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g6a16fb4ee9f5452cba63eb2a62f66a0f\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g\",\"caption\":\"Fran\u00e7ois Ledent\"},\"description\":\"Fran\u00e7ois is an electrical engineer working mainly on power applications and low-level FPGA developments. On the knowledge base, he is the author of several articles on a broad range of applications.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/francois-ledent\\\/\"],\"url\":\"https:\\\/\\\/imperix.com\\\/doc\\\/author\\\/ledent\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SSI - Digital encoder input - imperix","description":"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input","og_locale":"en_US","og_type":"article","og_title":"SSI - Digital encoder input - imperix","og_description":"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.","og_url":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input","og_site_name":"imperix","article_published_time":"2026-01-30T09:04:24+00:00","article_modified_time":"2026-03-11T14:53:04+00:00","og_image":[{"width":500,"height":334,"url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png","type":"image\/png"}],"author":"Fran\u00e7ois Ledent","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fran\u00e7ois Ledent","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#article","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input"},"author":{"name":"Fran\u00e7ois Ledent","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/1a0c3f44c7b64b1fd38dec245646aa8c"},"headline":"SSI &#8211; Digital encoder input","datePublished":"2026-01-30T09:04:24+00:00","dateModified":"2026-03-11T14:53:04+00:00","mainEntityOfPage":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input"},"wordCount":1783,"commentCount":0,"publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"image":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png","keywords":["Motor drives"],"articleSection":["Software reference"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#respond"]}]},{"@type":"WebPage","@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input","url":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input","name":"SSI - Digital encoder input - imperix","isPartOf":{"@id":"https:\/\/imperix.com\/doc\/#website"},"primaryImageOfPage":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#primaryimage"},"image":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#primaryimage"},"thumbnailUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png","datePublished":"2026-01-30T09:04:24+00:00","dateModified":"2026-03-11T14:53:04+00:00","description":"The SSI interface block instantiates an SSI master that retrieves motor position and turn count from encoders and digital sensors.","breadcrumb":{"@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#primaryimage","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2025\/05\/software.png","width":500,"height":334},{"@type":"BreadcrumbList","@id":"https:\/\/imperix.com\/doc\/software\/ssi-digital-encoder-input#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Knowledge base","item":"https:\/\/imperix.com\/doc\/"},{"@type":"ListItem","position":2,"name":"Software reference","item":"https:\/\/imperix.com\/doc\/category\/software"},{"@type":"ListItem","position":3,"name":"SSI &#8211; Digital encoder input"}]},{"@type":"WebSite","@id":"https:\/\/imperix.com\/doc\/#website","url":"https:\/\/imperix.com\/doc\/","name":"imperix","description":"power electronics","publisher":{"@id":"https:\/\/imperix.com\/doc\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/imperix.com\/doc\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/imperix.com\/doc\/#organization","name":"imperix","url":"https:\/\/imperix.com\/doc\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/imperix.com\/doc\/#\/schema\/logo\/image\/","url":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/imperix_logo.png","contentUrl":"https:\/\/imperix.com\/doc\/wp-content\/uploads\/2021\/03\/imperix_logo.png","width":350,"height":120,"caption":"imperix"},"image":{"@id":"https:\/\/imperix.com\/doc\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/imperix.com\/doc\/#\/schema\/person\/1a0c3f44c7b64b1fd38dec245646aa8c","name":"Fran\u00e7ois Ledent","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g6a16fb4ee9f5452cba63eb2a62f66a0f","url":"https:\/\/secure.gravatar.com\/avatar\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2021b1358e31ad6f0aa701e6470e41e82025de794c9a6b2014338cbea729454b?s=96&d=mm&r=g","caption":"Fran\u00e7ois Ledent"},"description":"Fran\u00e7ois is an electrical engineer working mainly on power applications and low-level FPGA developments. On the knowledge base, he is the author of several articles on a broad range of applications.","sameAs":["https:\/\/www.linkedin.com\/in\/francois-ledent\/"],"url":"https:\/\/imperix.com\/doc\/author\/ledent"}]}},"_links":{"self":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/36205","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/users\/17"}],"replies":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/comments?post=36205"}],"version-history":[{"count":78,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/36205\/revisions"}],"predecessor-version":[{"id":43652,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/posts\/36205\/revisions\/43652"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media\/33315"}],"wp:attachment":[{"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/media?parent=36205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/categories?post=36205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tags?post=36205"},{"taxonomy":"software-environments","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/software-environments?post=36205"},{"taxonomy":"provided-results","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/provided-results?post=36205"},{"taxonomy":"related-products","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/related-products?post=36205"},{"taxonomy":"guidedreadings","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/guidedreadings?post=36205"},{"taxonomy":"tutorials","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/tutorials?post=36205"},{"taxonomy":"user-manuals","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/user-manuals?post=36205"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/imperix.com\/doc\/wp-json\/wp\/v2\/coauthors?post=36205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}