Conversation
|
05/07/2025 AMDC CAN Spring 2025 End of Semester ReportThe purpose of this report is to describe the work done on getting CAN on the AMDC. OverviewThis project started with the goal of having the AMDC communicate with a 3rd party component, specifically the BorgWarner A couple of sub-goals for this project were to have a successful loop-back and AMDC to AMDC CAN communication. Loop-backWe were able to achieve a successful loop-back and observed that the signal from the transceiver of CANA was the same as the receiver of CANB. This was done by probing the single-ended pins on the differential transceiver of each side. Logic Analyzer capture of signal
Diagram of connections
One issue with this test was that the CAN signal appears to reach the second tranceiver on the CAN board and the peripheral in the Zynq-7000 SoC, but can't be printed through the driver. This could be an issue with the driver, as the For more details, please see the following issue: AMDC to AMDCWe were able to achieve a conditional AMDC (A) to AMDC (B) CAN communication and observed that the signal from the transceiver of CAN0A was the same as the receiver of CAN0B. This was done by probing the single-ended pins on the differential transceiver of each board. Logic Analyzer capture of signal
Diagram of connections
Similar to the loop-back test, the CAN signal can't be printed even after successfully reaching the Zynq. In the image above, CAN0A is connected to CAN1A, essentially doing a loopback, then it's connected to CAN0B through the terminal blocks on the side of the board. Under these conditions, we are able to achieve AMDC to AMDC CAN communication For more details, please see the following issue: HardwareThere are currently 2 assembled CAN boards, and they're both on the CAN Board Log. They've been tested and work in the conditional fashion as described above. Although both boards are functional, there are changes that could make them easier to debug and work with. Some of those changes include:
It would also be nice to have a male-to-male DB9 cable for when 2 CAN boards need to be connected to each other. Vivado ChangesThe CAN signal is routed from the GPIO port through the During the loop-back test, we observed that the signal had been inverted over the transmission. After confirming this issue, we created a new NOT IP block that was placed before the Zynq CAN RX inputs. CAN signal before creating the NOT IP block
NOT IP block location
You might notice that the NOT block is only on the For more details, please see the following issue: DriverIn the current state of the driver, you are able to initialize 2 As noted above, there is an issue where the CAN signal cannot be printed even though it is reaching the CAN peripheral within the Zynq. This could be due to an improper configuration of the peripheral in the driver. It could also be that we aren't reading the buffer in time to get the packet. Regardless, the CAN APPWhen you program the AMDC with the CAN APP, it will initialize both CAN peripherals to run at the same time. Most commands will require you to specify which peripheral you want to talk to. Every command and a brief description of each can be found below. CAN Commands
Future WorkThe immediate plan is to get around the wiring as shown above in the AMDC to AMDC communication. The proper wiring should be from AMDC A --> CAN(0 or 1)A --> CAN(0 or 1)B --> AMDCB. The next immediate issue would be to figure out how to properly receive a packet. After getting these two issues resolved, the CAN board should be able to perform a proper AMDC-to-AMDC CAN communication. This will also allow us to push this version of the CAN interface to the develop branch to prepare for a release. The following issues can be worked on in the future:
Footnotes
|







In progress