mirror of
https://github.com/mytechnotalent/Embedded-Hacking.git
synced 2026-07-12 07:06:42 +02:00
Add bare-metal I2C driver for RP2350 (0x07_i2c_cbm)
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file main.c
|
||||
* @author Kevin Thomas
|
||||
* @brief I2C demonstration: scan all 7-bit addresses and report devices.
|
||||
*
|
||||
* Demonstrates I2C bus scanning using the bare-metal I2C driver.
|
||||
* I2C1 is configured at 100 kHz on SDA=GPIO2 / SCL=GPIO3. A
|
||||
* formatted hex table of all responding device addresses is
|
||||
* printed over UART and repeated every 5 seconds.
|
||||
*
|
||||
* Wiring:
|
||||
* GPIO0 -> UART TX (USB-to-UART adapter RX)
|
||||
* GPIO1 -> UART RX (USB-to-UART adapter TX)
|
||||
* GPIO2 -> I2C device SDA (4.7 kohm pull-up to 3.3 V)
|
||||
* GPIO3 -> I2C device SCL (4.7 kohm pull-up to 3.3 V)
|
||||
* 3.3V -> I2C device VCC
|
||||
* GND -> I2C device GND
|
||||
*
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* Copyright (c) 2026 Kevin Thomas.
|
||||
* All rights reserved.
|
||||
*
|
||||
* This software is licensed under terms that can be found in the LICENSE file
|
||||
* in the root directory of this software component.
|
||||
* If no LICENSE file comes with this software, it is provided AS-IS.
|
||||
*
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "rp2350_i2c.h"
|
||||
#include "rp2350_uart.h"
|
||||
#include "rp2350_xosc.h"
|
||||
#include "rp2350_delay.h"
|
||||
|
||||
#define SCAN_DELAY_MS 5000
|
||||
|
||||
/**
|
||||
* @brief Application entry point for the I2C bus scanner demo.
|
||||
* @retval int does not return
|
||||
*/
|
||||
int main(void)
|
||||
{
|
||||
xosc_set_clk_ref();
|
||||
i2c_release_reset();
|
||||
i2c_init();
|
||||
uart_puts("I2C driver initialized: I2C1 @ 100 kHz SDA=GPIO2 SCL=GPIO3\r\n");
|
||||
while (1) {
|
||||
i2c_scan();
|
||||
delay_ms(SCAN_DELAY_MS);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user