Micronas HAL37xy sensor

I am trying to write/read data from the Micronas 37xy sensor found here-https://www.micronas.com/en/products/direct-angle-sensors/hal-37xy

The sensor is a 2D linear hall sensor that has a NVRAM/EEPROM;ROM, RAM, register. In theory, you are instructed to write a command to the sensor telling it to grab a new sensor value and store that information into the Ram registry. Then you simple read that registry for the new sensor value.

Has anyone had some experience with this sensor family or perhaps another sensor similar in operation?

I've attached the programming guide handout for the sensor.

37xy programming.pdf (1.11 MB)

Example flow diagram.pdf (388 KB)

Learn the SENT protocol. wiki
I have not seen other sensors (ment for hobbyists) tha use this protcol, but I'm sure it can be done.

Thanks for the link. I am writing code right now to do this function. I will post my code soon and hopefully it works.

After talking with Micronas support, i figured that this sensor would not meet my needs. Instead I am using the Infineon 3D magnetic sensor TLV493D-A1B6

I have written code and can be found here.

Hi IceNinja,

could you give me the whole manual because the attached ones seems to be partial.

Thanks

I've started working with this sensor, and documentation was scarce.

I successfully wrote a program that can READ out all the registers.
The FULL programming guide can be found here

I read registers 0-31, but I don't know what they represent yet. I'd like there to be a guide that lists what they are, such as "ANGLE_OUT=Register #23" (I made that up).

I think Micronas might be trying to push sales of their USB programmer, because there's no documentation on programming via their website, even though the data sheet says:

A description of the communication protocol and the programming of the sensor is available
in a separate document (HAL/HAR 37xy Programming Guide).

If anyone was curious, this is what my memory dump looks like. All numbers are displayed as 2's complement, even though the datasheet says some are not.

(Read Register  0) 001000000: Response: (19176us) 0|0000111110001101 (3981) 0000 CRC:0
(Read Register  1) 001000011: Response: (19184us) 0|1111111110010111 (-105) 0101 CRC:5
(Read Register  2) 001000101: Response: (19176us) 0|1111111110110101 (-75) 1001 CRC:9
(Read Register  3) 001000110: Response: (19176us) 0|0001111111101100 (8172) 1100 CRC:12
(Read Register  4) 001001001: Response: (19176us) 0|0000000000000000 (0) 0000 CRC:0
(Read Register  5) 001001010: Response: (19176us) 0|1111111111100100 (-28) 1000 CRC:8
(Read Register  6) 001001100: Response: (19176us) 0|0000000000000100 (4) 1100 CRC:12
(Read Register  7) 001001111: Response: (19176us) 0|1111111111100000 (-32) 0100 CRC:4
(Read Register  8) 001010001: Response: (19176us) 0|0001110010001100 (7308) 0011 CRC:3
(Read Register  9) 001010010: Response: (19184us) 0|0000000000100111 (39) 0011 CRC:3
(Read Register 10) 001010100: Response: (19176us) 0|1111111111111110 (-2) 0000 CRC:0
(Read Register 11) 001010111: Response: (19184us) 0|0001111100001010 (7946) 0101 CRC:5
(Read Register 12) 001011000: Response: (19184us) 0|0000000000000000 (0) 0000 CRC:0
(Read Register 13) 001011011: Response: (19176us) 0|0000000000000000 (0) 0000 CRC:0
(Read Register 14) 001011101: Response: (19184us) 0|0000000000000000 (0) 0000 CRC:0
(Read Register 15) 001011110: Response: (19176us) 0|1111111111101000 (-24) 1111 CRC:15
(Read Register 16) 001100001: Response: (19168us) 0|0100000000000000 (16384) 1000 CRC:8
(Read Register 17) 001100010: Response: (19176us) 0|0010000000000000 (8192) 0100 CRC:4
(Read Register 18) 001100100: Response: (19184us) 0|0001001011100100 (4836) 0000 CRC:0
(Read Register 19) 001100111: Response: (19176us) 0|0000100111111011 (2555) 0110 CRC:6
(Read Register 20) 001101000: Response: (19176us) 0|0000010100010001 (1297) 0000 CRC:0
(Read Register 21) 001101011: Response: (19184us) 0|0000001010001011 (651) 1101 CRC:13
(Read Register 22) 001101101: Response: (19184us) 0|0000000101000110 (326) 0010 CRC:2
(Read Register 23) 001101110: Response: (19184us) 0|0000000010100011 (163) 0001 CRC:1
(Read Register 24) 001110000: Response: (19176us) 0|0000000001010001 (81) 0001 CRC:1
(Read Register 25) 001110011: Response: (19176us) 0|0000000000101001 (41) 0010 CRC:2
(Read Register 26) 001110101: Response: (19184us) 0|0000000000010100 (20) 1001 CRC:9
(Read Register 27) 001110110: Response: (19176us) 0|0000000000001010 (10) 1101 CRC:13
(Read Register 28) 001111001: Response: (19176us) 0|0000000000000101 (5) 1111 CRC:15
(Read Register 29) 001111010: Response: (19176us) 0|1000000000000000 (-32768) 0011 CRC:3
(Read Register 30) 001111100: Response: (19184us) 0|0111111111111111 (32767) 0000 CRC:0
(Read Register 31) 001111111: Response: (19176us) 0|0000000000000001 (1) 0011 CRC:3

Here's an update:

Firstly, I created an arduino library (with examples) to READ from the sensor. I will post updates when I get writes working.
Link: HAL37XY Programmer on Github

I also reached out to Micronas support to see if they had any other helpful documents that weren't on their website. Turns out, they do! I attached them to this post.

Attachment 1 - Programming Guide: Specific instructions on how to program the HAL37xy sensors
Attachment 2 - User Manual: Has memory address mappings, so now you can tell what each register means.

HAL___HAR_37xy_Programming_Guide.pdf (732 KB)

Ok, everything is done and it works!

Read works!
Write works!
Change Base Address works!

The HAL37xyProgrammer repository on github is now updated with examples and documentation.
If there's anything you'd like to see, let me know.

Can this library be used as a generic reader for sensors using SENT protocol?