99久久全国免费观看_国产一区二区三区四区五区VM_久久www人成免费看片中文_国产高清在线a视频大全_深夜福利www_日韩一级成人av

Py32F030 使用Rust驅動I2C

I2C總線 簡介

I2C(Inter-IC Communication. IIC), 也是使用非常廣泛的同步串行總線, 支持多控制器,多從設備的總線,只需要 SCL 和 CLK兩根線即可,與 UART 串口不同的是, I2C 總線支持總線仲裁,解決多主設備同時發送時數據沖突問題,同時主從設備通信更穩定,因為使用時鐘線 CLK 用于同步收發雙方的速度。

I2C 總線支持一個主機并聯多個從設備。通常使用拓撲如下:

I2C 總線常用于板內設備通信,如M應用與CU與傳感器、控制電路、屏幕等設備之間的通信。 各從設備都具備一個 I2C 地址,且同一并聯的總線不能有相同的地址。I2C 的時鐘與數據線有著嚴格的時序要求。

I2C 時序

  • 起始信號:SCL保持高,SDA下降沿
  • 停止信號:SCL保持高,SDA上升沿
  • 采集數據:SDA穩定,SCL上升沿
  • ACK信號:接收方拉低SDA后,主機在SCL上升沿接收到低電平
  • NACK信號:

示例:examples/i2c_master_block.rs

#![no_std]
#![no_main]

use defmt::Debug2Format;
// use embedded_io::Write;
use embedded_hal::digital::v2::OutputPin;
use hal::delay;
use hal::i2c::{AnyI2c, Config};
use py32f030_hal::delay::delay_ms;
use py32f030_hal::gpio::{Output, PinIoType, PinSpeed};
use py32f030_hal::{selfas hal, mode::Blocking};

use {defmt_rtt as _, panic_probe as _};

#[cortex_m_rt::entry]
fn main() -> ! {
    defmt::info!("i2c start...");
    let p = hal::init(Default::default());

    let gpioa = p.GPIOA.split();

    letmut lcd_rst = Output::new(gpioa.PA4, PinIoType::PullUp, PinSpeed::Low);
    let _ = lcd_rst.set_low();
    delay_ms(200);
    let _ = lcd_rst.set_high();

    let sda = gpioa.PA2;
    let scl = gpioa.PA3;
    let config = Config::default().speed(200_000);
    // 配置 200K的速度
    let i2c1 = AnyI2c::<_, Blocking>::new(p.I2C, scl, sda, config).unwrap();
    let master = i2c1.as_master();

    let buf: [u8; 10] = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
    letmut r_buf: [u8; 2] = [0; 2];
    letmut cnt = 0;
    const SLAVE_DEVICE_ADDRESS: u8 = 0x3c;
    loop {
        // write from i2c
        let rst = master.write_block(SLAVE_DEVICE_ADDRESS, &buf);

        defmt::info!("write rst: {:?} ", Debug2Format(&rst));
        if rst.is_err() {
            // master.clear_errors()
        }

        // read from i2c
        let rst = master.read_block(SLAVE_DEVICE_ADDRESS, &mut r_buf);
        defmt::info!("read rst: {:?} ", Debug2Format(&rst));

        delay::delay_ms(1000);
        defmt::info!("{}", cnt);
        cnt += 1;
    }
}

聲明:本內容為作者獨立觀點,不代表電子星球立場。未經允許不得轉載。授權事宜與稿件投訴,請聯系:editor@netbroad.com
覺得內容不錯的朋友,別忘了一鍵三連哦!
贊 1
收藏 2
關注 14
成為作者 賺取收益
全部留言
0/200
成為第一個和作者交流的人吧
主站蜘蛛池模板: 传媒一区二区 | 老人内射视频代码免费视频 | 亚洲成人生活片 | 成人国产在线观看 | 国产午夜精品片一区二区三区 | 人妻丰满熟妇AV无码区乱 | 国产啪视频 | 亚洲av无码免费成人av | 久久综合九色综合97伊人 | 成人影院yyyyy111111 | 性少妇VIDEOXXⅩ欧美69 | 久草精品在线 | 国产亚洲精品资源在线26u91 | 免费乱码人妻系列无码专区 | 麻豆精品在线视频 | 国产精品一区二区三区视频网站 | 日韩三级在线观看 | www.毛片网站| 日韩在线播放网址 | 热久久久久香蕉无品码 | 78午夜福利视频 | avtt天堂网人妻系列 | 免费在线观看av的网站 | 欧美xxxx做受欧美88 | 久久99蜜桃综合影院免费观看 | 久久久久久国产精品免费播放 | 色情久久久AV熟女人妻网站 | 国产日韩综合一区在线观看 | 日本aⅴ日本高清视频影片www | 第一页av| 国产成人精品国内自产拍免费看 | 国产精品久久久久久婷婷动漫 | 亚洲一区二区三区不卡国产欧美 | 国内精品久久久人妻中文字幕 | aⅴ日本亚洲欧洲免费天堂 2019中文字幕久久 | 在线免费看一级片 | 成人激情视频网站 | 极品美女a诱v惑在线观看免费 | 免费人成在线观看成人片 | 蜜桃视频在线观看一区 | 18禁黄网站免费 |