This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Biss C on Ti 28xx microcontroller

Other Parts Discussed in Thread: TMS320F28379D, TMS320F2837, DESIGNDRIVE, CONTROLSUITE

Has anyone implemented BiSS C using the on-board peripherals on a '334 or '08 device (McBSP, SPI, I2C)?

Thanks.

  • Hi Bob,

    BiSS as a peripheral is not available in C2000 family and implementing the same using any other peripherals wouldn't be efficient.

    Regards,

    Gautam

  • Bob,

    We have done some initial work with BiSS on some of our newer devices.  In these designs we are using the SPI module plus some extra logic in order to generate the CDM signal.  We have not really focused on doing delay compensation yet and are focusing on a point-to-point sensor implementations.

    A few questions:
    1) Is a high-speed implementation required in your application?
    2) Will you be implementing a sensor/actuator bus or just a sensor bus?


    Thank you,
    Brett

  • Hi Brett,

     The intended implementation would be BiSS C unidirectional to an absolute encoder. I'm not sure what you consider high-speed, but  a minimum of 10MHz would be in the range for the clock (40 bits at 10MHz is 4uS just to get the encoder position, so faster would be better).  By sensor/actuator, I think you're referring to bi-directional or uni-directional. The bus would be uni-directional for this application.

    I hope this answers your questions.

    Thanks,

    Bob

  • Bob,

    By sensor/actuator I refer to the non-point-to-point implementation that is significantly more complex and that I haven't really seen much of.

    BiSS C (unidirectional) is an interface that is easier to implement and implementable via the C2000's SPI interface.

    The negative is that you will be limited to around 2MHz (depending on the cable length between the MCU and your encoder).  Other than this you should have no issue.  You mention that 4us is not quick enough, are you hoping to close a control loop with this information or is this for a different application?

    In general, I'm interested in your application and may be able to provide a few places to start.  Feel free to friend me on the forum (click my name then "add as friend") and we can have a private conversation.


    Thank you,
    Brett

  • Hi,

    I too want to use a couple of BiSS absolute encoders with C2000, target clock frequency is 3-5Mhz, unidirectional. The encoders will be very close to the DSP ( a few cm) so delay compensation should not be an issue.

    The specific encoders are these: http://www.rls.si/en/aksim-off-axis-rotary-absolute-encoder--17584

    I am thinking about using the SPI peripheral with 2 RS485 transceivers with enable inputs so that I can select the encoder I want to get the measurement from. I have not yet found an elegant way to trigger the reception of a new measurement as it becomes available on the encoder.

    I am very interested in any progress you have made with BiSS on C2000

  • Hi Brett,

    Do you have any application note about BiSS communication by using SPI ?

    We have an encoder with BiSS, we want to try.

    Best Regars,

    Gur
  • Hi,

    The answer to your question depends on what C2000 device you are using.

    Less than a month ago we released Position Manager library for the TMS320F28379D - a new device in the TMS320F2837xD family.  The new device features the ability to communication with a BiSS-C bidirectional encoder (as well EnDat 2.2 encoders) using a TI-built library.  Delay compensation is enabled as part of the solution.  Please take a look at the material for DesignDRIVE for more information:
    http://www.ti.com/tool/designdrive

    If you are using a different C2000 device, it is possible to interface to a BiSS-C encoder with the limitations mentioned earlier in the thread (unidirectional, <2MHz, use of short cables, etc) without too much difficulty.  However, we don't have any application notes to describe what is needed.  The method that probably makes the most sense is to use a C2000 SPI as a master to communicate to your encoder.  You'll need a C2000 SPI, a transceiver chip to change the signaling to RS482, and then your encoder.  The SPI clock line will become the BiSS clock signal and the BiSS data signal will become the SPI-SOMI.


    Thank you,
    Brett

  • Hi Gur,

    We have successfully used SPI on F28069 to communicate wiht an absolute encoder.

    On the software side its almost like any SPI peripheral device, but without a Chip-Select signal and with some bit shifting since the data is not organized or aligned in bytes or words but in "raw" bits. For example, our encoder sends 41 bits, so we send 3 16-bit words (48 bits in total, the last 7 are dummy). If you need to, you can also implement error checking using the checksum included in the message, I think this is standard for all BISS devices.

    On the hardware side, you may need an RS-422 transceiver to convert between differential lines on the encoder side and single-ended signals on the C2000 side.

    My impression is that, at least for simple cases, BISS is a lot easier to implement and use than what one may think when reading about the protocol.It's just a simple synchronous serial interface with checksumming. A lot of the initial difficulty is due to the confusion between RS-422 and RS-485: RS-422 refers to the differential transmission of the electrical signals, RS-485 describes the logical communication protocol but also uses RS-422 for the transmission. So a lot of times RS-422 and Rs-485 are used interchangeably though the refer to different aspects of the communication.

    Using the protocol to its full extent is probably more demanding though, so YMMV.

    Good Luck,

    Giannis

  • Dear Brett,

    Thank you for giving information.

    We are using STM32 series MCUs. We don't have any experince with C2000 series.

    But we can try C2000 series MCUs for this reason.

    I have few questions:

    - For solution 2 : do you have any source code to communicate over SPI with BiSS which you can share us ?
    - For solution 2: Can we do this with TM4C ARM cortex based MCUs ? It can much gettable/useable for us.

    Best Regards,

    Gur
  • Hi Gur,

    Gur gorgun said:


    - For solution 2 : do you have any source code to communicate over SPI with BiSS which you can share us ?



    No, we don't have anything readily available.  However, the software would be similar to some of the SPI examples in controlSUITE.  For the C2000 F2803x series, the controlSUITE SPI examples are located at the below directory:
    \controlSUITE\device_support\f2803x\v129\DSP2803x_examples_ccsv5\

    Some customization will be needed though in order to turn them into something that could be interfaced to a BiSS encoder. 


    Gur gorgun said:


    - For solution 2: Can we do this with TM4C ARM cortex based MCUs ? It can much gettable/useable for us.



    I am not an expert on the TM4C devices (this is the C2000 portion of the forum), but I would assume so. 

    Your choice in microcontroller is often best based on what task you are trying to do.  If you are looking to control a motor based on the position feedback you are receiving from your encoder (and torque feedback from the inverter), then a C2000 may be a good choice - it is designed to meet the demands of power-efficient control systems.  If, instead, you are looking to gather data and stream it into the IoT, the TM4C may be a more appropriate choice.

    ---

    Hopefully this helps!


    Thank you,
    Brett

  • I failed to clarify that in our case we are using BISS over short transmission lines, 20cm max, and with one peripheral on the bus, so we don't seem to need any transmission delay compensation, which would complicate things significantly.