Has anyone implemented BiSS C using the on-board peripherals on a '334 or '08 device (McBSP, SPI, I2C)?
Thanks.
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.
Has anyone implemented BiSS C using the on-board peripherals on a '334 or '08 device (McBSP, SPI, I2C)?
Thanks.
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,
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
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 ?
Gur gorgun said:
- For solution 2: Can we do this with TM4C ARM cortex based MCUs ? It can much gettable/useable for us.
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.