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.
Hello,
I recently got a problem as indicated in the title. In general, I has been trying to implement the library from "<install_dir>\controlSUITE\libs\app_libs\position_manager\v01_02_00_00\bissc\examples to obtain readings from an absolute encoder. I tried to follow the setup in these two threads (thread1 and thread2) to complete the code and eventually got the project built with bug free. A brief view of my project is attached in the following.
The SPI related GPIOs are shown in the following figure
Although it is bug free to build, but I can not get the reading. I tried to debug and found that the SPI RX Interrupt does not work normally. This was found by setting up and tracking a global counter inside the interrupt during the debug process. the counter value and the dataReady value are always zero and never change. I would be greatly appreciate if you could please provide me some hints to solve this issue! thanks!
Thanks for the reply, Lori. I defined both the BISSC_DATA_STRUCT struct and the counter as volatile, but still could not see them changed during running.
Are you using the hardware from TI? (BOOSTXL_POSMGR) or your own hardware?
I suggest checking some of the signals using a oscilloscope:
Do you see the clock at the SPICLK pin?
Is the MA line active as expected?
Is a response seen from the encoder on SL?
Note: I will be out of the office next week so additional responses will be delayed until ~Oct 23rd
Thanks, Lori. I am not using BOOSTXL_POSMGR, I just simply connect the encoder to a F28379D launchxl pad. wiring scheme follows the figure below.
the encoder data sheet can be found in the following link(https://www.rls.si/eng/fileuploader/download/download/?d=1&file=custom%2Fupload%2FMBAD01_10_bookmark.pdf)
Some updates about what I found:
When I powered the encoder using the launchpad, interrupt was not triggered
1. BiSS clk signal is a square wave with a max of 4.3V and a min of 4.1V
2. SPI CLK signal is always high and at 3.3V
3. SPI SIMO signal is always high and at 3.3V
However, When I powered the encoder using an external 5V power supply, the interrupt worked
1. BiSS CLK signal is normal and at a range of 0~3.3V
2. SPI CLK signal is normal and at a range of 0~3.3V
3. SPI SIMO signal is abnormal and always high of 3.3V
I would greatly appreciate if you could provide me some hints to resolve these abnormal phenomena!
Hello Sichuan,
Lori is presently out of office, and will return around Tuesday of next week. She'll be able to look at your question at that time.
Thank you,
Jason Osborn
Hello, I believe the GPIO numbers in that diagram are not all correct - check the setup_GPIO() function in the example.
Hello, Lori,
I just tried to change the GPIO number on my case, However. the problem is still there. Can I use the F28379D board to provide a 5V power supply for the encoder? or do I need to use an external power supply for the encoder?
Although I used an external power supply to power the encoder, the reading always has crc_incorrect problem. I believe this is because the SLO data is not correctly collected.
Yes, you can power the encoder externally. I would make sure ground connections are common with the LaunchPad. If you are not using the BOOSTXL_POSMGR, do you have your own board with RS-485 drivers?
It would also be good to re-check the signals now that you have changed the GPIOs being used.
Thanks, Lori. I am not sure whether the board has a RS485 or not. But I got the reading by converting the original single-ended signal into differential signals and using the BOOSTXL_POSMGR. It looks that I cannot use F28379D directly obtain data from the encoder board, which only supports single-ended unidirectional BiSS data flow.
Correct, F2837xD does not handle differential signals directly. I will close this thread.
Cheers
Lori