Interfacing of ACS71020 using SPI

akshu15
Posts: 3
Joined: Sun Aug 23, 2020 1:54 pm

Interfacing of ACS71020 using SPI

Postby akshu15 » Sun Aug 23, 2020 2:28 pm

Hi Team,

I am interfacing [ACS71020][https://www.allegromicro.com/~/media/Fi ... sheet.ashx] with ESP32. I code ESP32 using Arduino IDE. I want to interface this IC with ESP32 using SPI communication. Its SPI frame like below.
SPI_frame.PNG
SPI_frame.PNG (21.86 KiB) Viewed 5632 times
I need to send 7 bits of address 1 bit of read/write which makes 1 byte. But after that, I need to read 32 bytes of data from this IC or I need to write 32 bytes of data to this IC.
If I want to read 32-bits of data, I need to send dummy 4 bytes on the MOSI line so that I will get data on the MISO line. I don't know, which register to read in this case. Can you guide me on this, please? Or do you have better suggestion to interface this IC?
Till now I have been successful in writing SPI data to other devices ex. Arduino UNO as a slave. I have attached my code below for such SPI data write.
ESP32_SPI_Master.zip
My ESP32 code where I can write SPI data to Arduino UNO as slave
(1.31 KiB) Downloaded 546 times
But I need assistance to read from ACS71020 ic. Can somebody guide me on how to read 32-bit data using SPI communication.

Thanks in advance,
Akshay Godase

User avatar
jgustavoam
Posts: 165
Joined: Thu Feb 01, 2018 2:43 pm
Location: Belo Horizonte , Brazil
Contact:

Re: Interfacing of ACS71020 using SPI

Postby jgustavoam » Wed Sep 09, 2020 1:28 am

Hi Askhay,
First, you must select the appropriate model for your option:
ACS71020KMABTR-030B3-SPI (VCC = 3,3V and SPI interface).

Maximum SPI Clock Frequency = 10 MHz (I suggest you do initial tests with 1 MHz)

"It is recommended that the ACS71020 be the only device on the SPI bus if using SPI communication."
The most common mode of the SPI protocol is SPI Mode 0 - MSB First. I think it will work.

https://en.wikipedia.org/wiki/Serial_Pe ... _Interface

https://github.com/espressif/arduino-es ... raries/SPI

Example:
https://github.com/espressif/arduino-es ... _Buses.ino
Retired IBM Brasil
Electronic hobbyist since 1976.

User avatar
jgustavoam
Posts: 165
Joined: Thu Feb 01, 2018 2:43 pm
Location: Belo Horizonte , Brazil
Contact:

Re: Interfacing of ACS71020 using SPI

Postby jgustavoam » Wed Sep 09, 2020 2:02 am

Did you understand all about of this information?
" The SPI frame consists of:
• The Master writes on the MOSI line the 7-bit address of the
register to be read from or written to.
• The next bit on the MOSI line is the read/write (RW) indicator.
A high state indicates a Read and a low state indicates a Write.
• The device sends a 32-bit response on the MISO line. The
contents correspond to the previous command.
• On the MOSI line, if the current command is a write, the 32
bits correspond to the Write data, and in the case of a read, the
data is ignored"

EEPROM/Shadow Memory range of addresses = 0x0B to 0x01F. (all with 32 bits)

Volatile Memory range of adresses = 0x20 to 0x31. (all with 32 bits)

You can write or read all of these memory registers.

First try - you must read the value = 0x4F70656E

Register 0x2F
Bits Name Description
31:0 access_code Access code register:
Customer code: 0x4F70656E
Retired IBM Brasil
Electronic hobbyist since 1976.

akshu15
Posts: 3
Joined: Sun Aug 23, 2020 1:54 pm

Re: Interfacing of ACS71020 using SPI

Postby akshu15 » Wed Sep 09, 2020 4:09 am

Hi there,

Thanks for this kind reply. I will try your recommendations and get back to you if I face any problem.

Thanks,
Akshay Godase

Who is online

Users browsing this forum: No registered users and 44 guests