Quantcast
Channel: Raspberry Pi Forums
Viewing all articles
Browse latest Browse all 8051

General • Re: Pico as slave not receiving data from arduino(master).

$
0
0
Hi,
I have attached below Master and Slave code.

Master code:
We have referred the below github link for master to send data.
Link:https://github.com/felias-fogg/SoftI2CMaster

Slave code:
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/i2c.h"
#include "hardware/irq.h"

#define I2C0_SLAVE_ADDR 0x0B
#define GPIO_SDA0 0
#define GPIO_SCK0 1
#define I2C0_BASE 0x40044000

volatile uint32_t * const I2C0_DATA_CMD = (volatile uint32_t * const)(I2C0_BASE + 0x10);
volatile uint32_t * const I2C0_INTR_STAT = (volatile uint32_t * const)(I2C0_BASE + 0x2c);
volatile uint32_t * const I2C0_INTR_MASK = (volatile uint32_t * const)(I2C0_BASE + 0x30);
volatile uint32_t * const I2C0_CLR_RD_REQ = (volatile uint32_t * const)(I2C0_BASE + 0x50);

#define I2C_DATA_CMD_FIRST_BYTE 0x00000800
#define I2C_DATA_CMD_DATA 0x000000ff
#define I2C_INTR_STAT_READ_REQ 0x00000020
#define I2C_INTR_STAT_RX_FULL 0x00000004
#define I2C_INTR_MASK_READ_REQ 0x00000020
#define I2C_INTR_MASK_RX_FULL 0x00000004

uint8_t ram_addr;
uint8_t ram[256];

void i2c0_irq_handler() {
uint32_t status = *I2C0_INTR_STAT;

if (status & I2C_INTR_STAT_RX_FULL) {
uint32_t value = *I2C0_DATA_CMD;
if (value & I2C_DATA_CMD_FIRST_BYTE) {
ram_addr = (uint8_t)(value & I2C_DATA_CMD_DATA);
} else {
ram[ram_addr] = (uint8_t)(value & I2C_DATA_CMD_DATA);
ram_addr++;
}
// Print received data
printf("Received Data: 0x%02X at Address: 0x%02X\n", ram[ram_addr - 1], ram_addr - 1);
}

if (status & I2C_INTR_STAT_READ_REQ) {
*I2C0_DATA_CMD = (uint32_t)ram[ram_addr];
*I2C0_CLR_RD_REQ;
ram_addr++;
}
}

int main() {
stdio_init_all();
i2c_init(i2c0, 100 * 1000);
i2c_set_slave_mode(i2c0, true, I2C0_SLAVE_ADDR);
gpio_set_function(GPIO_SDA0, GPIO_FUNC_I2C);
gpio_set_function(GPIO_SCK0, GPIO_FUNC_I2C);
gpio_pull_up(GPIO_SDA0);
gpio_pull_up(GPIO_SCK0);

ram_addr = 0;

*I2C0_INTR_MASK = (I2C_INTR_MASK_READ_REQ | I2C_INTR_MASK_RX_FULL);

irq_set_exclusive_handler(I2C0_IRQ, i2c0_irq_handler);
irq_set_enabled(I2C0_IRQ, true);

while (true) {
tight_loop_contents();
}

return 0;
}

Output :
We are getting the output as mentioned below.

Received Data: 0x00 at Address: 0xFFFFFFFF
Received Data: 0x00 at Address: 0x00
Received Data: 0x00 at Address: 0x01
Received Data: 0x00 at Address: 0x02
Received Data: 0x00 at Address: 0x03
Received Data: 0x00 at Address: 0x04
Received Data: 0x00 at Address: 0x05
Received Data: 0x00 at Address: 0x06
Received Data: 0x00 at Address: 0x07
Received Data: 0x00 at Address: 0x08
Received Data: 0x00 at Address: 0x09
Received Data: 0x00 at Address: 0x0A
Received Data: 0x00 at Address: 0x0B
Received Data: 0x00 at Address: 0x0C
Received Data: 0x00 at Address: 0x0D
Received Data: 0x00 at Address: 0x0E
Received Data: 0x00 at Address: 0x0F
Received Data: 0x00 at Address: 0x10
Received Data: 0x00 at Address: 0x11
Received Data: 0x00 at Address: 0x12
Received Data: 0x00 at Address: 0x13
Received Data: 0x00 at Address: 0x14
Received Data: 0x00 at Address: 0x15
Received Data: 0x00 at Address: 0x16
Received Data: 0x00 at Address: 0x17
Received Data: 0x00 at Address: 0x18
Received Data: 0x00 at Address: 0x19
Received Data: 0x00 at Address: 0x1A
Received Data: 0x00 at Address: 0x1B
Received Data: 0x00 at Address: 0x1C
Received Data: 0x00 at Address: 0x1D
Received Data: 0x00 at Address: 0x1E
Received Data: 0x00 at Address: 0x1F
Received Data: 0x00 at Address: 0x20
Received Data: 0x00 at Address: 0x21
Received Data: 0x00 at Address: 0x22
Received Data: 0x00 at Address: 0x23
Received Data: 0x00 at Address: 0x24
Received Data: 0x00 at Address: 0x25
Received Data: 0x00 at Address: 0x26
Received Data: 0x00 at Address: 0x27
Received Data: 0x00 at Address: 0x28
Received Data: 0x00 at Address: 0x29
Received Data: 0x00 at Address: 0x2A
Received Data: 0x00 at Address: 0x2B
Received Data: 0x00 at Address: 0x2C
Received Data: 0x00 at Address: 0x2D
Received Data: 0x00 at Address: 0x2E
Received Data: 0x00 at Address: 0x2F
Received Data: 0x00 at Address: 0x30
Received Data: 0x00 at Address: 0x31
Received Data: 0x00 at Address: 0x32
Received Data: 0x00 at Address: 0x33
Received Data: 0x00 at Address: 0x34
Received Data: 0x00 at Address: 0x35
Received Data: 0x00 at Address: 0x36
Received Data: 0x00 at Address: 0x37
Received Data: 0x00 at Address: 0x38
Received Data: 0x00 at Address: 0x39
Received Data: 0x00 at Address: 0x3A
Received Data: 0x00 at Address: 0x3B
Received Data: 0x00 at Address: 0x3C
Received Data: 0x00 at Address: 0x3D
Received Data: 0x00 at Address: 0x3E
Received Data: 0x00 at Address: 0x3F
Received Data: 0x00 at Address: 0x40
Received Data: 0x00 at Address: 0x41
Received Data: 0x00 at Address: 0x42
Received Data: 0x00 at Address: 0x43
Received Data: 0x00 at Address: 0x44
Received Data: 0x00 at Address: 0x45
Received Data: 0x00 at Address: 0x46
Received Data: 0x00 at Address: 0x47
Received Data: 0x00 at Address: 0x48
Received Data: 0x00 at Address: 0x49
Received Data: 0x00 at Address: 0x4A
Received Data: 0x00 at Address: 0x4B
Received Data: 0x00 at Address: 0x4C
Received Data: 0x00 at Address: 0x4D
Received Data: 0x00 at Address: 0x4E
Received Data: 0x00 at Address: 0x4F
Received Data: 0x00 at Address: 0x50
Received Data: 0x00 at Address: 0x51
Received Data: 0x00 at Address: 0x52
Received Data: 0x00 at Address: 0x53
Received Data: 0x00 at Address: 0x54
Received Data: 0x00 at Address: 0x55
Received Data: 0x00 at Address: 0x56
Received Data: 0x00 at Address: 0x57
Received Data: 0x00 at Address: 0x58
Received Data: 0x00 at Address: 0x59
Received Data: 0x00 at Address: 0x5A
Received Data: 0x00 at Address: 0x5B
Received Data: 0x00 at Address: 0x5C
Received Data: 0x00 at Address: 0x5D
Received Data: 0x00 at Address: 0x5E
Received Data: 0x00 at Address: 0x5F
Received Data: 0x00 at Address: 0x60
Received Data: 0x00 at Address: 0x61
Received Data: 0x00 at Address: 0x62
Received Data: 0x00 at Address: 0x63
Received Data: 0x00 at Address: 0x64
Received Data: 0x00 at Address: 0x65
Received Data: 0x00 at Address: 0x66
Received Data: 0x00 at Address: 0x67
Received Data: 0x00 at Address: 0x68
Received Data: 0x00 at Address: 0x69
Received Data: 0x00 at Address: 0x6A
Received Data: 0x00 at Address: 0x6B
Received Data: 0x00 at Address: 0x6C
Received Data: 0x00 at Address: 0x6D
Received Data: 0x00 at Address: 0x6E
Received Data: 0x00 at Address: 0x6F
Received Data: 0x00 at Address: 0x70
Received Data: 0x00 at Address: 0x71
Received Data: 0x00 at Address: 0x72
Received Data: 0x00 at Address: 0x73
Received Data: 0x00 at Address: 0x74
Received Data: 0x00 at Address: 0x75
Received Data: 0x00 at Address: 0x76
Received Data: 0x00 at Address: 0x77
Received Data: 0x00 at Address: 0x78
Received Data: 0x00 at Address: 0x79
Received Data: 0x00 at Address: 0x7A
Received Data: 0x00 at Address: 0x7B
Received Data: 0x00 at Address: 0x7C
Received Data: 0x00 at Address: 0x7D
Received Data: 0x00 at Address: 0x7E
Received Data: 0x00 at Address: 0x7F
Received Data: 0x00 at Address: 0x80
Received Data: 0x00 at Address: 0x81
Received Data: 0x00 at Address: 0x82
Received Data: 0x00 at Address: 0x83
Received Data: 0x00 at Address: 0x84
Received Data: 0x00 at Address: 0x85
Received Data: 0x00 at Address: 0x86
Received Data: 0x00 at Address: 0x87
Received Data: 0x00 at Address: 0x88
Received Data: 0x00 at Address: 0x89
Received Data: 0x00 at Address: 0x8A
Received Data: 0x00 at Address: 0x8B
Received Data: 0x00 at Address: 0x8C
Received Data: 0x00 at Address: 0x8D
Received Data: 0x00 at Address: 0x8E
Received Data: 0x00 at Address: 0x8F
Received Data: 0x00 at Address: 0x90
Received Data: 0x00 at Address: 0x91
Received Data: 0x00 at Address: 0x92
Received Data: 0x00 at Address: 0x93
Received Data: 0x00 at Address: 0x94
Received Data: 0x00 at Address: 0x95
Received Data: 0x00 at Address: 0x96
Received Data: 0x00 at Address: 0x97
Received Data: 0x00 at Address: 0x98
Received Data: 0x00 at Address: 0x99
Received Data: 0x00 at Address: 0x9A
Received Data: 0x00 at Address: 0x9B
Received Data: 0x00 at Address: 0x9C
Received Data: 0x00 at Address: 0x9D
Received Data: 0x00 at Address: 0x9E
Received Data: 0x00 at Address: 0x9F
Received Data: 0x00 at Address: 0xA0
Received Data: 0x00 at Address: 0xA1
Received Data: 0x00 at Address: 0xA2
Received Data: 0x00 at Address: 0xA3
Received Data: 0x00 at Address: 0xA4
Received Data: 0x00 at Address: 0xA5
Received Data: 0x00 at Address: 0xA6
Received Data: 0x00 at Address: 0xA7
Received Data: 0x00 at Address: 0xA8
Received Data: 0x00 at Address: 0xA9
Received Data: 0x00 at Address: 0xAA
Received Data: 0x00 at Address: 0xAB
Received Data: 0x00 at Address: 0xAC
Received Data: 0x00 at Address: 0xAD
Received Data: 0x00 at Address: 0xAE
Received Data: 0x00 at Address: 0xAF
Received Data: 0x00 at Address: 0xB0
Received Data: 0x00 at Address: 0xB1
Received Data: 0x00 at Address: 0xB2
Received Data: 0x00 at Address: 0xB3
Received Data: 0x00 at Address: 0xB4
Received Data: 0x00 at Address: 0xB5
Received Data: 0x00 at Address: 0xB6
Received Data: 0x00 at Address: 0xB7
Received Data: 0x00 at Address: 0xB8
Received Data: 0x00 at Address: 0xB9
Received Data: 0x00 at Address: 0xBA
Received Data: 0x00 at Address: 0xBB
Received Data: 0x00 at Address: 0xBC
Received Data: 0x00 at Address: 0xBD
Received Data: 0x00 at Address: 0xBE
Received Data: 0x00 at Address: 0xBF
Received Data: 0x00 at Address: 0xC0
Received Data: 0x00 at Address: 0xC1
Received Data: 0x00 at Address: 0xC2
Received Data: 0x00 at Address: 0xC3
Received Data: 0x00 at Address: 0xC4
Received Data: 0x00 at Address: 0xC5
Received Data: 0x00 at Address: 0xC6
Received Data: 0x00 at Address: 0xC7
Received Data: 0x00 at Address: 0xC8
Received Data: 0x00 at Address: 0xC9
Received Data: 0x00 at Address: 0xCA
Received Data: 0x00 at Address: 0xCB
Received Data: 0x00 at Address: 0xCC
Received Data: 0x00 at Address: 0xCD
Received Data: 0x00 at Address: 0xCE
Received Data: 0x00 at Address: 0xCF
Received Data: 0x00 at Address: 0xD0
Received Data: 0x00 at Address: 0xD1
Received Data: 0x00 at Address: 0xD2
Received Data: 0x00 at Address: 0xD3
Received Data: 0x00 at Address: 0xD4
Received Data: 0x00 at Address: 0xD5
Received Data: 0x00 at Address: 0xD6
Received Data: 0x00 at Address: 0xD7
Received Data: 0x00 at Address: 0xD8
Received Data: 0x00 at Address: 0xD9
Received Data: 0x00 at Address: 0xDA
Received Data: 0x00 at Address: 0xDB
Received Data: 0x00 at Address: 0xDC
Received Data: 0x00 at Address: 0xDD
Received Data: 0x00 at Address: 0xDE
Received Data: 0x00 at Address: 0xDF
Received Data: 0x00 at Address: 0xE0
Received Data: 0x00 at Address: 0xE1
Received Data: 0x00 at Address: 0xE2
Received Data: 0x00 at Address: 0xE3
Received Data: 0x00 at Address: 0xE4
Received Data: 0x00 at Address: 0xE5
Received Data: 0x00 at Address: 0xE6
Received Data: 0x00 at Address: 0xE7
Received Data: 0x00 at Address: 0xE8
Received Data: 0x00 at Address: 0xE9
Received Data: 0x00 at Address: 0xEA
Received Data: 0x00 at Address: 0xEB
Received Data: 0x00 at Address: 0xEC
Received Data: 0x00 at Address: 0xED
Received Data: 0x00 at Address: 0xEE
Received Data: 0x00 at Address: 0xEF
Received Data: 0x00 at Address: 0xF0
Received Data: 0x00 at Address: 0xF1
Received Data: 0x00 at Address: 0xF2
Received Data: 0x00 at Address: 0xF3
Received Data: 0x00 at Address: 0xF4
Received Data: 0x00 at Address: 0xF5
Received Data: 0x00 at Address: 0xF6
Received Data: 0x00 at Address: 0xF7
Received Data: 0x00 at Address: 0xF8
Received Data: 0x00 at Address: 0xF9
Received Data: 0x00 at Address: 0xFA
Received Data: 0x00 at Address: 0xFB
Received Data: 0x00 at Address: 0xFC
Received Data: 0x00 at Address: 0xFD
Received Data: 0x00 at Address: 0xFE

Statistics: Posted by muthu109 — Wed Jan 24, 2024 7:04 am



Viewing all articles
Browse latest Browse all 8051

Trending Articles