User Mode UART and Register Write (0x06) command

Announcements

From sunburn to sun earn – we’ve got the power! Watch our #poweringgreen videos now.

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User17968
Level 1
Level 1
Welcome! First question asked First reply posted
Hi,
I am using IMC101T-T038 device, that is connected via UART to a LPC800 microcontroller. I was able to establish USER MODE UART communication between the two devices and I am also able to control the motor using USER MODE UART functionality described in section 2.3 of Infineon-MCESW-RM-UM-v01_01-EN.pdf document.
The trouble I run into is that when device is in operation I would like to change some registers content on the fly, but for some reason they are locked for edit. I am able to read the content of all APP ID = 1 registers, but am unable to change the content. Is there a lock mechanism of some sort, or is this just not possible? All other commands Read Status, Clear Fault, Register Read etc. work flawlessly, but Register Write command, while working correctly does not update the content of register that it is writing to.
Is it possible to update the registers only using MCEDesigner and not USER MODE UART?

Regards,
Jure

EDIT:
Ok, after some experimenting it seems that when using command 0x06 to write a register to IMC device ,the value gets updated, but confirmation reply from IMC device returns the not updated value. For instance, by default my under voltage level in register dcUvLevel is set to 1767. When powering our custom board with voltage level lower then set under voltage limit, the read LED is blinking and indicating fault, also reading status register we can see fault 8 (under voltage). Now if I write 0 to register dcUvLevel (APP_ID 1, INDEX 14), setting under voltage protection to 0 V, the red LED stops blinking and fault register is cleared indicating no error, but return value from write command still includes old value of 1767!? Also when reading dcUvLevel register the return value is 1767?! Why is the value not updated?
0 Likes
1 Reply
User19695
Level 1
Level 1
10 replies posted 5 replies posted First question asked
hi,
Is your calibration algorithm consistent with the description in the reference manual in the user UART interface?
Here are the frames I captured while debugging the communication interface.


master→slave: 01 06 01 78 01 00 FD 81
slave→master: 01 86 01 78 01 00 FD 01 //START

master→slave: 01 06 01 78 00 00 FE 81
slave→master: 01 86 01 78 00 00 FE 01 //STOP

The last two check bytes calculated for the data frame should be:
master→slave: (0x01+0x06+0x0178+0x0100)×(-1) = 0xFD81
slave→master: (0x01+0x86+0x0178+0x0100)×(-1) = 0xFD01 //START

master→slave: (0x01+0x06+0x0178+0x0000)×(-1) = 0xFE81
slave→master: (0x01+0x86+0x0178+0x0000)×(-1) = 0xFE01 //STOP

Then the description in the reference manual is:
4427.attach

What's the matter?
0 Likes