I have been communicating with my scooter’s micro-controller through halfduplex mode on Serial1 on my Particle Photon for a few months now. A few days ago halfduplex mode completely stopped working. I have begun troubleshooting, but am at a loss right now. I have figured out that Serial1 works, but not half duplex mode on Serial1. I use system firmware 0.7.0 but it has the same issue with other versions.
First test: Disconnect Photon from all connections, except for a GPS module (Gnd, TX, & RX via UART). First test confirms that Photon’s Serial1’s Rx is working as I receive data from the GPS module (with half duplex mode disabled).
Second test: Connected Photon to scooter’s data connection (gnd and tx, with half duplex enabled). Second test confirms that no data is being transmitted, although the program does instruct the Photon to send data through Serial1.
Third test: Enable Serial2 (and half duplex mode) on Photon and connected to scooter’s data connection using same program as second test (gnd and serial2’s tx). Third test confirms that Serial2’s half duplex is working and the scooter’s data connection is properly working.
While I can communicate to the scooter through Serial2, my RGB light is disabled. I would rather use Serial1 as it has dedicated pins and aids in debugging & troubleshooting by not using Serial2.
The main problem that I am having is that I can not figure out why Serial1’s half duplex mode stopped working. My multi meter reads the scooter’s data connection to be 3.28V DC, about 0V AC, and about 0.01 - 0.03 mA DC; all the readings seem to be within the Photon’s specs. I think it is likely a hardware problem, but I do not know how to prevent this problem from reoccurring on Serial2 or the next Photon I buy.
So I purchased a new Photon and attempted to transmit data between my old Photon (receiving data) and the new Photon (transmitting data).
I have found that both devices can transmit and receive with each other on Serial2 with half-duplex enabled.
No device can transmit data on Serial1 with half duplex enabled.
I have also found that Serial1 on the new Photon (with half duplex enabled) can receive data transmitted from Serial2 on my old Photon.
The reverse is not true. Serial1 on my old Photon (with half duplex enabled) cannot receive data from Serial2 on my new Photon.
I am beginning to think it is a software issue. However, this issue is present on different system firmware versions and half duplex mode will work with Serial2. If it is a software issue, the problem would lie in only Serial1’s half duplex mode.
Still thinking of different things to try to get half duplex mode working on Serial1 even if it is only communication between two Photons.
I haven’t removed the connection to the RGB LED as I only want to use Serial2 temporary and keep the LED. I do use the solder pad underneath for Serial2. Using half duplex on Serial2 works fine on both devices, even with the LED and resistors still in place.
I’m finding that I can’t transmit on either Photon when it is on Serial1 in half duplex mode.
What other version have you tried? In versions before 0.7.0 half duplex did sort-of work on Serial1 but had this problem https://github.com/particle-iot/firmware/issues/1276
Maybe the "fix" caused the behaviour you're seeing now.
I have used versions 0.8.0-rc11 and 0.7.0… I attempted to use 0.5.0, but I received an error when compiling which stated that half duplex was not available.