Can an SPI slave start a transmission in full-duplex mode?STM32 SPI not working as I expect it should based...

Colleagues speaking another language and it impacts work

Generator for parity?

How can glass marbles naturally occur in a desert?

Can a character who casts Shapechange and turns into a spellcaster use innate spellcasting to cast spells with a long casting time?

Is it possible to script what applications should open certain file extensions?

Infeasibility in mathematical optimization models

Where to pee in London?

Is multiplication of real numbers uniquely defined as being distributive over addition?

sed delete all the words before a match

Are any jet engines used in combat aircraft water cooled?

In a topological space if there exists a loop that cannot be contracted to a point does there exist a simple loop that cannot be contracted also?

What is a "Genuine Geraldo interviewee"?

How can I tell if a flight itinerary is fake?

How to identify the wires on the dimmer to convert it to Conventional on/off switch

Circle around all points of a layer

How do I explain to a team that the project they will work on for six months will 100% fail?

Tikzcd pullback square issue

Blocking people from taking pictures of me with smartphone

Does two puncture wounds mean venomous snake?

Best gun to modify into a monsterhunter weapon?

Why are physicists so interested in irreps if in their non-block-diagonal form they mix all components of a vector?

Is it true that control+alt+delete only became a thing because IBM would not build Bill Gates a computer with a task manager button?

How to remove something from the slug/url

How to help new students accept function notation



Can an SPI slave start a transmission in full-duplex mode?


STM32 SPI not working as I expect it should based on online readingSerial Peripheral InterfaceSPI slave unreliable on PIC18LF2550Full duplex SPI Master using DMA - STM32F105STM32F2xx: Data from SPI Slave to MasterWhat is holding the SS pin high in SPI master mode on AVRs?STM32F411 SPI slave enters debug infinite loopSPI daisy chain read receive from slaveSPI clock source - master or slaveSPI internals _ missing MISO clock during read operationSPI: Receiving bytes from slave






.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty{ margin-bottom:0;
}







3












$begingroup$


As far as I know, SPI transmission for an SPI slave works like below:




  1. Master selects a slave using SS pin

  2. Master and slave send data to each other simultaneously

  3. Master starts clock and data transmission at the same time (there is no clock before write operation)

  4. Master stops transmission any time it wants (by stopping write operation and clock generation), even if slave has more data to send.


Is there any SPI slave configuration which allows slave to transmit data without permission of master?



I'm just thinking out loud. Assume that there is only one slave and a continuous clock is provided by master etc.



Even if assumed statement is true, don't master and slave lose byte synchronization (i.e. receives bit stream) since there is no start-stop bits for SPI?



I'm asking such a question because I've read the following section from this document.




2.2 SPI Example



The attached SPI example illustrates the use of the USART in
synchronous mode. USART1 is configured as slave, whereas USART2 is
master. The following transactions take place:




  • Data transmission from master to slave.

  • Data transmission from slave to master.

  • Data transmission from master to slave and from slave to master simultaneously.




The document gives SPI example but realizes the example using USART devices. And I get that a USART slave can start a transmission without permission of master.



I couldn't find the source code that is referenced by the document.










share|improve this question









New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$endgroup$










  • 4




    $begingroup$
    The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
    $endgroup$
    – Peter Smith
    9 hours ago






  • 4




    $begingroup$
    Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
    $endgroup$
    – Chris Stratton
    9 hours ago




















3












$begingroup$


As far as I know, SPI transmission for an SPI slave works like below:




  1. Master selects a slave using SS pin

  2. Master and slave send data to each other simultaneously

  3. Master starts clock and data transmission at the same time (there is no clock before write operation)

  4. Master stops transmission any time it wants (by stopping write operation and clock generation), even if slave has more data to send.


Is there any SPI slave configuration which allows slave to transmit data without permission of master?



I'm just thinking out loud. Assume that there is only one slave and a continuous clock is provided by master etc.



Even if assumed statement is true, don't master and slave lose byte synchronization (i.e. receives bit stream) since there is no start-stop bits for SPI?



I'm asking such a question because I've read the following section from this document.




2.2 SPI Example



The attached SPI example illustrates the use of the USART in
synchronous mode. USART1 is configured as slave, whereas USART2 is
master. The following transactions take place:




  • Data transmission from master to slave.

  • Data transmission from slave to master.

  • Data transmission from master to slave and from slave to master simultaneously.




The document gives SPI example but realizes the example using USART devices. And I get that a USART slave can start a transmission without permission of master.



I couldn't find the source code that is referenced by the document.










share|improve this question









New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$endgroup$










  • 4




    $begingroup$
    The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
    $endgroup$
    – Peter Smith
    9 hours ago






  • 4




    $begingroup$
    Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
    $endgroup$
    – Chris Stratton
    9 hours ago
















3












3








3





$begingroup$


As far as I know, SPI transmission for an SPI slave works like below:




  1. Master selects a slave using SS pin

  2. Master and slave send data to each other simultaneously

  3. Master starts clock and data transmission at the same time (there is no clock before write operation)

  4. Master stops transmission any time it wants (by stopping write operation and clock generation), even if slave has more data to send.


Is there any SPI slave configuration which allows slave to transmit data without permission of master?



I'm just thinking out loud. Assume that there is only one slave and a continuous clock is provided by master etc.



Even if assumed statement is true, don't master and slave lose byte synchronization (i.e. receives bit stream) since there is no start-stop bits for SPI?



I'm asking such a question because I've read the following section from this document.




2.2 SPI Example



The attached SPI example illustrates the use of the USART in
synchronous mode. USART1 is configured as slave, whereas USART2 is
master. The following transactions take place:




  • Data transmission from master to slave.

  • Data transmission from slave to master.

  • Data transmission from master to slave and from slave to master simultaneously.




The document gives SPI example but realizes the example using USART devices. And I get that a USART slave can start a transmission without permission of master.



I couldn't find the source code that is referenced by the document.










share|improve this question









New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






$endgroup$




As far as I know, SPI transmission for an SPI slave works like below:




  1. Master selects a slave using SS pin

  2. Master and slave send data to each other simultaneously

  3. Master starts clock and data transmission at the same time (there is no clock before write operation)

  4. Master stops transmission any time it wants (by stopping write operation and clock generation), even if slave has more data to send.


Is there any SPI slave configuration which allows slave to transmit data without permission of master?



I'm just thinking out loud. Assume that there is only one slave and a continuous clock is provided by master etc.



Even if assumed statement is true, don't master and slave lose byte synchronization (i.e. receives bit stream) since there is no start-stop bits for SPI?



I'm asking such a question because I've read the following section from this document.




2.2 SPI Example



The attached SPI example illustrates the use of the USART in
synchronous mode. USART1 is configured as slave, whereas USART2 is
master. The following transactions take place:




  • Data transmission from master to slave.

  • Data transmission from slave to master.

  • Data transmission from master to slave and from slave to master simultaneously.




The document gives SPI example but realizes the example using USART devices. And I get that a USART slave can start a transmission without permission of master.



I couldn't find the source code that is referenced by the document.







microcontroller spi uart serial






share|improve this question









New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.










share|improve this question









New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








share|improve this question




share|improve this question








edited 9 hours ago









bitsmack

13.3k7 gold badges38 silver badges82 bronze badges




13.3k7 gold badges38 silver badges82 bronze badges






New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.








asked 10 hours ago









JeJoRicJeJoRic

183 bronze badges




183 bronze badges




New contributor



JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.




New contributor




JeJoRic is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.













  • 4




    $begingroup$
    The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
    $endgroup$
    – Peter Smith
    9 hours ago






  • 4




    $begingroup$
    Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
    $endgroup$
    – Chris Stratton
    9 hours ago
















  • 4




    $begingroup$
    The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
    $endgroup$
    – Peter Smith
    9 hours ago






  • 4




    $begingroup$
    Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
    $endgroup$
    – Chris Stratton
    9 hours ago










4




4




$begingroup$
The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
$endgroup$
– Peter Smith
9 hours ago




$begingroup$
The slave, by definition, cannot initiate a transaction (it may be able to interrupt the master to get a transaction started though).
$endgroup$
– Peter Smith
9 hours ago




4




4




$begingroup$
Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
$endgroup$
– Chris Stratton
9 hours ago






$begingroup$
Unidirectional data transfer in traditional SPI is just someone ignoring the state of the line going in the other direction. Writes, reads, and bidirectional transfers aren't really any different. In fact for example many SPI peripherals will clock out a status word during the first word, before they even know what is being requested, since it costs next to nothing to do so and allows a quick status polling.
$endgroup$
– Chris Stratton
9 hours ago












2 Answers
2






active

oldest

votes


















8












$begingroup$

No, with SPI, all communications are driven by the master device. You are correct that the master cannot simply provide a continuous clock; there would be no way to detect the byte boundaries.



A slave device will often have a separate output pin to signal to the master that it has data available. This pin is connected to an input on a microcontroller and is often used as an interrupt.



Then, the device can assert the pin, causing the microcontroller to spin up the SPI bus.





For more detailed information, please read on :) This is a slightly-modified version of an explanation found here:




The slave device can only communicate when it is provided a clock from the master. This complicates reading from the slave, because you have to cause the master to provide enough clock cycles for the slave to respond.



When you send an SPI command from the master, two transmissions actually happen during the same eight clock pulses. The first is that your byte is clocked out of the MOSI line. But, at the same time, data is being clocked in to the microcontroller via the MISO line.



But since the slave doesn't get the full command until the end of these transactions, it doesn't present any data to the bus. This results in a received value of 0x00 or 0xFF.



Then you need to provide an additional eight clocks to allow the slave to return the actual value. In many code implementations, this is done by sending a "dummy byte" to the slave.



Note that, in the first transmission, the master ignores whatever arrives from the slave. In the second transmission, the slave ignores whatever is sent by the master.




That describes the general case. There can be additional complexities. For example, some slave ICs will actually output some sort of status byte at the same time they are receiving a command from the master. So, in this case, the master shouldn't discard the first received byte.






share|improve this answer











$endgroup$











  • 1




    $begingroup$
    "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
    $endgroup$
    – Aaron
    5 hours ago










  • $begingroup$
    @Aaron Good to know! People keep getting more and more clever :-)
    $endgroup$
    – bitsmack
    2 hours ago



















1












$begingroup$

No, master is the one that arbitrates the chipselects and drives the clock. A slave will always only listen to clock and chipselect. Data transfer can be full duplex still. There are some implementations where the clock can be continuous, but it does not matter much as the chipselect is used to synchronize the byte boundaries anyway. But then there are multimaster systems, so basically you can have some mechanism for the devices to decide who is slave and master. Or just include a separate "interrupt" wire for the slave to signal the master that it has a data packet for the master.






share|improve this answer









$endgroup$


















    Your Answer






    StackExchange.ifUsing("editor", function () {
    return StackExchange.using("schematics", function () {
    StackExchange.schematics.init();
    });
    }, "cicuitlab");

    StackExchange.ready(function() {
    var channelOptions = {
    tags: "".split(" "),
    id: "135"
    };
    initTagRenderer("".split(" "), "".split(" "), channelOptions);

    StackExchange.using("externalEditor", function() {
    // Have to fire editor after snippets, if snippets enabled
    if (StackExchange.settings.snippets.snippetsEnabled) {
    StackExchange.using("snippets", function() {
    createEditor();
    });
    }
    else {
    createEditor();
    }
    });

    function createEditor() {
    StackExchange.prepareEditor({
    heartbeatType: 'answer',
    autoActivateHeartbeat: false,
    convertImagesToLinks: false,
    noModals: true,
    showLowRepImageUploadWarning: true,
    reputationToPostImages: null,
    bindNavPrevention: true,
    postfix: "",
    imageUploader: {
    brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
    contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
    allowUrls: true
    },
    onDemand: true,
    discardSelector: ".discard-answer"
    ,immediatelyShowMarkdownHelp:true
    });


    }
    });






    JeJoRic is a new contributor. Be nice, and check out our Code of Conduct.










    draft saved

    draft discarded


















    StackExchange.ready(
    function () {
    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f452278%2fcan-an-spi-slave-start-a-transmission-in-full-duplex-mode%23new-answer', 'question_page');
    }
    );

    Post as a guest















    Required, but never shown

























    2 Answers
    2






    active

    oldest

    votes








    2 Answers
    2






    active

    oldest

    votes









    active

    oldest

    votes






    active

    oldest

    votes









    8












    $begingroup$

    No, with SPI, all communications are driven by the master device. You are correct that the master cannot simply provide a continuous clock; there would be no way to detect the byte boundaries.



    A slave device will often have a separate output pin to signal to the master that it has data available. This pin is connected to an input on a microcontroller and is often used as an interrupt.



    Then, the device can assert the pin, causing the microcontroller to spin up the SPI bus.





    For more detailed information, please read on :) This is a slightly-modified version of an explanation found here:




    The slave device can only communicate when it is provided a clock from the master. This complicates reading from the slave, because you have to cause the master to provide enough clock cycles for the slave to respond.



    When you send an SPI command from the master, two transmissions actually happen during the same eight clock pulses. The first is that your byte is clocked out of the MOSI line. But, at the same time, data is being clocked in to the microcontroller via the MISO line.



    But since the slave doesn't get the full command until the end of these transactions, it doesn't present any data to the bus. This results in a received value of 0x00 or 0xFF.



    Then you need to provide an additional eight clocks to allow the slave to return the actual value. In many code implementations, this is done by sending a "dummy byte" to the slave.



    Note that, in the first transmission, the master ignores whatever arrives from the slave. In the second transmission, the slave ignores whatever is sent by the master.




    That describes the general case. There can be additional complexities. For example, some slave ICs will actually output some sort of status byte at the same time they are receiving a command from the master. So, in this case, the master shouldn't discard the first received byte.






    share|improve this answer











    $endgroup$











    • 1




      $begingroup$
      "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
      $endgroup$
      – Aaron
      5 hours ago










    • $begingroup$
      @Aaron Good to know! People keep getting more and more clever :-)
      $endgroup$
      – bitsmack
      2 hours ago
















    8












    $begingroup$

    No, with SPI, all communications are driven by the master device. You are correct that the master cannot simply provide a continuous clock; there would be no way to detect the byte boundaries.



    A slave device will often have a separate output pin to signal to the master that it has data available. This pin is connected to an input on a microcontroller and is often used as an interrupt.



    Then, the device can assert the pin, causing the microcontroller to spin up the SPI bus.





    For more detailed information, please read on :) This is a slightly-modified version of an explanation found here:




    The slave device can only communicate when it is provided a clock from the master. This complicates reading from the slave, because you have to cause the master to provide enough clock cycles for the slave to respond.



    When you send an SPI command from the master, two transmissions actually happen during the same eight clock pulses. The first is that your byte is clocked out of the MOSI line. But, at the same time, data is being clocked in to the microcontroller via the MISO line.



    But since the slave doesn't get the full command until the end of these transactions, it doesn't present any data to the bus. This results in a received value of 0x00 or 0xFF.



    Then you need to provide an additional eight clocks to allow the slave to return the actual value. In many code implementations, this is done by sending a "dummy byte" to the slave.



    Note that, in the first transmission, the master ignores whatever arrives from the slave. In the second transmission, the slave ignores whatever is sent by the master.




    That describes the general case. There can be additional complexities. For example, some slave ICs will actually output some sort of status byte at the same time they are receiving a command from the master. So, in this case, the master shouldn't discard the first received byte.






    share|improve this answer











    $endgroup$











    • 1




      $begingroup$
      "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
      $endgroup$
      – Aaron
      5 hours ago










    • $begingroup$
      @Aaron Good to know! People keep getting more and more clever :-)
      $endgroup$
      – bitsmack
      2 hours ago














    8












    8








    8





    $begingroup$

    No, with SPI, all communications are driven by the master device. You are correct that the master cannot simply provide a continuous clock; there would be no way to detect the byte boundaries.



    A slave device will often have a separate output pin to signal to the master that it has data available. This pin is connected to an input on a microcontroller and is often used as an interrupt.



    Then, the device can assert the pin, causing the microcontroller to spin up the SPI bus.





    For more detailed information, please read on :) This is a slightly-modified version of an explanation found here:




    The slave device can only communicate when it is provided a clock from the master. This complicates reading from the slave, because you have to cause the master to provide enough clock cycles for the slave to respond.



    When you send an SPI command from the master, two transmissions actually happen during the same eight clock pulses. The first is that your byte is clocked out of the MOSI line. But, at the same time, data is being clocked in to the microcontroller via the MISO line.



    But since the slave doesn't get the full command until the end of these transactions, it doesn't present any data to the bus. This results in a received value of 0x00 or 0xFF.



    Then you need to provide an additional eight clocks to allow the slave to return the actual value. In many code implementations, this is done by sending a "dummy byte" to the slave.



    Note that, in the first transmission, the master ignores whatever arrives from the slave. In the second transmission, the slave ignores whatever is sent by the master.




    That describes the general case. There can be additional complexities. For example, some slave ICs will actually output some sort of status byte at the same time they are receiving a command from the master. So, in this case, the master shouldn't discard the first received byte.






    share|improve this answer











    $endgroup$



    No, with SPI, all communications are driven by the master device. You are correct that the master cannot simply provide a continuous clock; there would be no way to detect the byte boundaries.



    A slave device will often have a separate output pin to signal to the master that it has data available. This pin is connected to an input on a microcontroller and is often used as an interrupt.



    Then, the device can assert the pin, causing the microcontroller to spin up the SPI bus.





    For more detailed information, please read on :) This is a slightly-modified version of an explanation found here:




    The slave device can only communicate when it is provided a clock from the master. This complicates reading from the slave, because you have to cause the master to provide enough clock cycles for the slave to respond.



    When you send an SPI command from the master, two transmissions actually happen during the same eight clock pulses. The first is that your byte is clocked out of the MOSI line. But, at the same time, data is being clocked in to the microcontroller via the MISO line.



    But since the slave doesn't get the full command until the end of these transactions, it doesn't present any data to the bus. This results in a received value of 0x00 or 0xFF.



    Then you need to provide an additional eight clocks to allow the slave to return the actual value. In many code implementations, this is done by sending a "dummy byte" to the slave.



    Note that, in the first transmission, the master ignores whatever arrives from the slave. In the second transmission, the slave ignores whatever is sent by the master.




    That describes the general case. There can be additional complexities. For example, some slave ICs will actually output some sort of status byte at the same time they are receiving a command from the master. So, in this case, the master shouldn't discard the first received byte.







    share|improve this answer














    share|improve this answer



    share|improve this answer








    edited 8 hours ago

























    answered 9 hours ago









    bitsmackbitsmack

    13.3k7 gold badges38 silver badges82 bronze badges




    13.3k7 gold badges38 silver badges82 bronze badges











    • 1




      $begingroup$
      "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
      $endgroup$
      – Aaron
      5 hours ago










    • $begingroup$
      @Aaron Good to know! People keep getting more and more clever :-)
      $endgroup$
      – bitsmack
      2 hours ago














    • 1




      $begingroup$
      "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
      $endgroup$
      – Aaron
      5 hours ago










    • $begingroup$
      @Aaron Good to know! People keep getting more and more clever :-)
      $endgroup$
      – bitsmack
      2 hours ago








    1




    1




    $begingroup$
    "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
    $endgroup$
    – Aaron
    5 hours ago




    $begingroup$
    "the master cannot simply provide a continuous clock" Actually I've seen a device not too long ago that does exactly that. It was a weird little beast. I don't recall the P/N unfortunately.
    $endgroup$
    – Aaron
    5 hours ago












    $begingroup$
    @Aaron Good to know! People keep getting more and more clever :-)
    $endgroup$
    – bitsmack
    2 hours ago




    $begingroup$
    @Aaron Good to know! People keep getting more and more clever :-)
    $endgroup$
    – bitsmack
    2 hours ago













    1












    $begingroup$

    No, master is the one that arbitrates the chipselects and drives the clock. A slave will always only listen to clock and chipselect. Data transfer can be full duplex still. There are some implementations where the clock can be continuous, but it does not matter much as the chipselect is used to synchronize the byte boundaries anyway. But then there are multimaster systems, so basically you can have some mechanism for the devices to decide who is slave and master. Or just include a separate "interrupt" wire for the slave to signal the master that it has a data packet for the master.






    share|improve this answer









    $endgroup$




















      1












      $begingroup$

      No, master is the one that arbitrates the chipselects and drives the clock. A slave will always only listen to clock and chipselect. Data transfer can be full duplex still. There are some implementations where the clock can be continuous, but it does not matter much as the chipselect is used to synchronize the byte boundaries anyway. But then there are multimaster systems, so basically you can have some mechanism for the devices to decide who is slave and master. Or just include a separate "interrupt" wire for the slave to signal the master that it has a data packet for the master.






      share|improve this answer









      $endgroup$


















        1












        1








        1





        $begingroup$

        No, master is the one that arbitrates the chipselects and drives the clock. A slave will always only listen to clock and chipselect. Data transfer can be full duplex still. There are some implementations where the clock can be continuous, but it does not matter much as the chipselect is used to synchronize the byte boundaries anyway. But then there are multimaster systems, so basically you can have some mechanism for the devices to decide who is slave and master. Or just include a separate "interrupt" wire for the slave to signal the master that it has a data packet for the master.






        share|improve this answer









        $endgroup$



        No, master is the one that arbitrates the chipselects and drives the clock. A slave will always only listen to clock and chipselect. Data transfer can be full duplex still. There are some implementations where the clock can be continuous, but it does not matter much as the chipselect is used to synchronize the byte boundaries anyway. But then there are multimaster systems, so basically you can have some mechanism for the devices to decide who is slave and master. Or just include a separate "interrupt" wire for the slave to signal the master that it has a data packet for the master.







        share|improve this answer












        share|improve this answer



        share|improve this answer










        answered 9 hours ago









        JustmeJustme

        5,9612 gold badges6 silver badges17 bronze badges




        5,9612 gold badges6 silver badges17 bronze badges

























            JeJoRic is a new contributor. Be nice, and check out our Code of Conduct.










            draft saved

            draft discarded


















            JeJoRic is a new contributor. Be nice, and check out our Code of Conduct.













            JeJoRic is a new contributor. Be nice, and check out our Code of Conduct.












            JeJoRic is a new contributor. Be nice, and check out our Code of Conduct.
















            Thanks for contributing an answer to Electrical Engineering Stack Exchange!


            • Please be sure to answer the question. Provide details and share your research!

            But avoid



            • Asking for help, clarification, or responding to other answers.

            • Making statements based on opinion; back them up with references or personal experience.


            Use MathJax to format equations. MathJax reference.


            To learn more, see our tips on writing great answers.




            draft saved


            draft discarded














            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2felectronics.stackexchange.com%2fquestions%2f452278%2fcan-an-spi-slave-start-a-transmission-in-full-duplex-mode%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown





















































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown

































            Required, but never shown














            Required, but never shown












            Required, but never shown







            Required, but never shown







            Popular posts from this blog

            Taj Mahal Inhaltsverzeichnis Aufbau | Geschichte | 350-Jahr-Feier | Heutige Bedeutung | Siehe auch |...

            Baia Sprie Cuprins Etimologie | Istorie | Demografie | Politică și administrație | Arii naturale...

            Nicolae Petrescu-Găină Cuprins Biografie | Opera | In memoriam | Varia | Controverse, incertitudini...