吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

RA6T2的IIC使用DTC讀寫eeprom

我快閉嘴 ? 來源: 瑞薩MCU小百科 ? 作者:瑞薩MCU小百科 ? 2022-09-23 14:21 ? 次閱讀

介紹

客戶在初次使用e2 studio開發程序的時候不知道如何使用IDE,本文以RA6T2為例子,詳細地介紹了在一個新建的程序中,通過配置實現IIC對eeprom的讀寫。

在e2 studio中新建一個程序,點擊configuration.xml文件打開配置界面。

設置IIC模塊的時鐘源,在IIC通信的時候用來給SCL提供時鐘信號。打開文檔查看PLL時鐘的寄存器配置,PLL一共需要配置三個參數,分別是輸入鎖相環分頻系數、時鐘源、PLL倍頻因子。

78b0bb64-3af6-11ed-9e49-dac502259ad0.png

點擊Clocks配置時鐘,這里使用了PLL倍頻時鐘,PLL倍頻時鐘可以選擇主時鐘或者內部高速振蕩器作為時鐘源,這里選用內部高速振蕩器HOCO作為PLL倍頻時鐘源。

HOCO時鐘為20M,PLL Div/2鎖相環輸入分頻將時鐘降為10M,PLL Mul x24.0倍頻因子將時鐘倍頻為240M。配置IIC時鐘源IICCLK Src,選擇PLL作為時鐘源,IICCLK Div/2輸入分頻將時鐘降為120MHZ,IIC的時鐘源則為120MHz。(要注意的是RA6T2的IIC時鐘源要配置到60MHz以上)

791c7520-3af6-11ed-9e49-dac502259ad0.png

點擊pins,配置IIC的pin引腳,RA6T2有兩路IIC,分別是IIC0和IIC1,在Connectivity:IIC中可以配置相應的IIC引腳,這里選擇的是IIC0配置。

RA6T2的IIC0一共可以選擇5組IIC引腳(A~E),下圖Pin Group Selection選擇的是_B only,將操作模式Operation Mode設置為Enabled,使能B組IIC的引腳配置,這時候IIC對應的SCL0對應的引腳為PC10,SDA0對應的引腳為PC11。每一組IIC的引腳都是固定的,引腳編號也不一樣,如果選擇_A only,SCL0對應的引腳為PB06,SDA0對應的引腳為PB07。

7947d620-3af6-11ed-9e49-dac502259ad0.png

點擊右邊的設置按鈕,并點擊FSP Visualization 可以打開芯片的圖形界面,在點擊IIC0,在芯片的圖形界面上就會顯示出IIC0的B組引腳PC10和PC11在芯片中的位置。也可以點擊芯片圖形界面上的引腳配置相應的引腳功能。

79a1ee8a-3af6-11ed-9e49-dac502259ad0.png

點擊Stacks,會出現下圖所示的配置驅動代碼的界面,e2 studio會根據用戶的配置,自動生成相應驅動代碼。點擊New Stack新建一個Stack,在New Stack里面選擇Connectivity配置通信類的驅動代碼,在Connectivity的下一級目錄中點擊I2C Master(r_iic_b_master),生成IIC Master的驅動,在RA6T2中一個共有5種IIC類型可以選,這里使用IIC作為主機模式使用所以選擇r_iic_b_master,r_iic_b_slave是將IIC設置成從機模式,r_sci_b_master是將通用串行接口SCI設置成簡易IIC主機模式,其他兩個是作為從機模式使用。

79f47646-3af6-11ed-9e49-dac502259ad0.png

點擊圖片上右上角紅框框出來的設置和g_i2c_master0 I2C Master(r_iic_b_master),再點擊屬性界面,就可以調出IIC的配置界面。

Name是設置IIC模塊的名稱;Channel選IIC的0通道;Rate IIC的傳輸速度設置為標準模式;Rise Time上升沿時間為120ns(默認值);Fall time下降沿時間為120ns(默認值);Duty Cycle時鐘計數周期為50(默認值);Slave Address從設備地址為0x50;Address Mode 7-Bit表示設備地址為7位;Timeout Mode IIC通信超時時間設置為短時間模式;Timeout during SCL Low Enable超時的時候SCL時鐘線為低電平;Callback設置回調函數名;Interrupt Priority Level中斷等級設置為12級;SCL0選擇IIC時鐘引腳;SDA0選擇IIC數據引腳。

7be6e84e-3af6-11ed-9e49-dac502259ad0.png

DTC全稱叫Data Transfer Controller(數據傳送控制器),功能與DMA類似,點擊Stacks,打開驅動配置界面,在配置好的g_i2c_master0 I2C Master(r_iic_b_master)模塊下有兩個小模塊,分別是Add DTC Driver for Transmission[Optional]增加IIC的發送DTC功能,Add DTC Driver for Reception[Optional]增加IIC的接收DTC功能。左鍵點擊Add DTC Driver for Transmission[Optional],彈出new->Transfer(r_dtc),左鍵點擊Transfer(r_dtc)生成DTC配置文件。

7cb95270-3af6-11ed-9e49-dac502259ad0.png

在IIC的屬性配置中,將DTC on Transmission and Reception設置成Enabled。

7d40a720-3af6-11ed-9e49-dac502259ad0.png

點擊下圖紅框框出來的地方,可以查看和設置配置信息。g_transfer0是DTC模塊名稱;Normal表示使用正常模式;傳輸大小為1 Byte;目的地址固定;源地址遞增;在發送完成后產生中斷;以IIC的發送寄存器為空作為DTC的觸發源。

7e0a25a0-3af6-11ed-9e49-dac502259ad0.png

左鍵點擊紅框內的Generate Project Content將配置好的信息生成相應的驅動代碼。

7e556344-3af6-11ed-9e49-dac502259ad0.png

下圖是經過屬性配置后自動生成的IIC初始化代碼,這個函數在工程目錄下的ra->fsp->src->r_iic_b_master-> r_iic_b_master.c文件里面,函數調用方法如下:

fsp_err_t err;

err = R_IIC_B_MASTER_Open (&g_i2c_master0_ctrl, &g_i2c_master0_cfg);

R_IIC_B_MASTER_Open函數有一個fsp_err_t類型的返回值,如果函數調用成功,則會返回FSP_SUCCESS,否則返回其他錯誤提示。

7e8bee5a-3af6-11ed-9e49-dac502259ad0.png

函數里面需要傳入兩個參數,這個兩個參數是在配置IIC的時候系統自動生成的,參數在工程目錄下的ra_gen->hal_data.c文件里面。

g_i2c_master0_ctrl是用來記錄IIC的狀態信息,g_i2c_master0_cfg用來保存IIC的配置信息。

如果配置了DTC功能,在R_IIC_B_MASTER_Open函數里面會根據配置信息,選擇以DTC的模式來通信。

7ec0c22e-3af6-11ed-9e49-dac502259ad0.png

7ed60f44-3af6-11ed-9e49-dac502259ad0.png

在初始化IIC完成后,就可以使用IIC主設備與其他的IIC從設備進行通信。例如下圖使用RA6T2的IIC主模式往eeprom里面寫入數據。

7f8707ea-3af6-11ed-9e49-dac502259ad0.png

代碼向eeprom里面寫入64字節的數據,IIC一共要發送67字節的數據,其中第一個字節是發送eeprom的設備地址,在R_IIC_B_MASTER_Write函數中已經寫入IIC的設備地址了(配置IIC的時候填入的),所以還要再發送66個字節的數據;第二個和第三個數據是eeprom的存儲地址;第4到第67是需要發送的數據,一共是64字節,代碼上發送的是0~63的uint8_t類型的數據。

R_IIC_B_MASTER_Write是IIC主設備向從設備發送數據的函數,其中g_i2c_master0_ctrl是用來記錄IIC的狀態信息,在ra_gen->hal_data.c文件里面有聲明;write_buffer是要發送的eeprom存儲地址和數據;write_buffer_count表示要發送66字節的數據(不算設備地址);false表示發送完成后結束通信。最后要注意的是,要等待IIC發送數據完成、給一個延遲(eeprom寫入數據完成后通常需要一個短暫的延遲后才能進行下一步操作)。

另外,使用RA6T2的IIC主模式往eeprom里面讀取數據的操作如下圖所示。

7fb72650-3af6-11ed-9e49-dac502259ad0.png

代碼向eeprom里面讀取64字節的數據。read_buffer_ID是為2個字節,這兩個字節對應的是需要讀取的eeprom數據的存儲位置;read_buffer 是一個uint8_t類型的數組,用來存儲從eeprom讀取出來的64字節的數據;read_buffer_count表示要從eeprom里面讀取64個字節的數據。

想要讀取eeprom里面的數據,要先通過IIC發送設備地址,以及需要讀取的eeprom存儲地址,下圖代碼通過R_IIC_B_MASTER_Write函數向IIC發送了設備地址和read_buffer_ID(2個字節的eeprom存儲地址),這時候通信還沒有結束,所以R_IIC_B_MASTER_Write函數的最后一個參數填的是ture,繼續進行通信,validate_i2c_event函數是等待eeprom應答,當eeprom應答后,再通過R_IIC_B_MASTER_Read函數讀取數據,從R_IIC_B_MASTER_Write函數寫入的地址開始計算,遞增讀取eeprom里面的數據,一個64字節的數據。

結論

通過上面的設置實現了RA6T2的IIC使用DTC讀寫eeprom。

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • EEPROM
    +關注

    關注

    9

    文章

    1033

    瀏覽量

    81952
  • IIC
    IIC
    +關注

    關注

    11

    文章

    302

    瀏覽量

    38500

原文標題:RA6T2的IIC使用DTC讀寫eeprom

文章出處:【微信號:瑞薩MCU小百科,微信公眾號:瑞薩MCU小百科】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    RA6T2數據手冊(英)

    RA6T2數據手冊(英)
    發表于 11-07 19:50 ?1次下載
    <b class='flag-5'>RA6T2</b>數據手冊(英)

    RA6T2硬件用戶手冊(英)

    RA6T2硬件用戶手冊(英)
    發表于 11-07 19:50 ?0次下載
    <b class='flag-5'>RA6T2</b>硬件用戶手冊(英)

    RA6T2數據手冊(中英)

    RA6T2數據手冊(中英)
    發表于 11-07 19:50 ?2次下載
    <b class='flag-5'>RA6T2</b>數據手冊(中英)

    RA6T2 組數據表

    RA6T2 組數據表
    發表于 01-10 19:05 ?0次下載
    <b class='flag-5'>RA6T2</b> 組數據表

    RA6T2 組用戶手冊:硬件

    RA6T2 組用戶手冊:硬件
    發表于 01-10 19:05 ?0次下載
    <b class='flag-5'>RA6T2</b> 組用戶手冊:硬件

    RA6T2組數據表

    RA6T2 組數據表
    發表于 06-30 19:51 ?0次下載
    <b class='flag-5'>RA6T2</b>組數據表

    RA6T2組用戶手冊:硬件

    RA6T2 組用戶手冊:硬件
    發表于 06-30 19:51 ?0次下載
    <b class='flag-5'>RA6T2</b>組用戶手冊:硬件

    RA6T2的16位模數轉換器操作 [4] 配置RA6T2 ADC模塊 (1)

    RA6T2的16位模數轉換器操作 [4] 配置RA6T2 ADC模塊 (1)
    的頭像 發表于 03-29 08:05 ?423次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [4] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (1)

    RA6T2的16位模數轉換器操作 [5] 配置RA6T2 ADC模塊 (2)

    RA6T2的16位模數轉換器操作 [5] 配置RA6T2 ADC模塊 (2)
    的頭像 發表于 04-04 08:05 ?418次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [5] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (<b class='flag-5'>2</b>)

    RA6T2的16位模數轉換器操作 [6] 配置RA6T2 ADC模塊 (3)

    RA6T2的16位模數轉換器操作 [6] 配置RA6T2 ADC模塊 (3)
    的頭像 發表于 04-12 08:06 ?363次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [<b class='flag-5'>6</b>] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (3)

    RA6T2的16位模數轉換器操作 [7] 配置RA6T2 ADC模塊 (4)

    RA6T2的16位模數轉換器操作 [7] 配置RA6T2 ADC模塊 (4)
    的頭像 發表于 04-20 08:06 ?433次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [7] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (4)

    RA6T2的16位模數轉換器操作 [8] 配置RA6T2 ADC模塊 (5)

    RA6T2的16位模數轉換器操作 [8] 配置RA6T2 ADC模塊 (5)
    的頭像 發表于 04-29 08:08 ?452次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [8] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (5)

    RA6T2的16位模數轉換器操作 [9] 配置RA6T2 ADC模塊 (6)

    RA6T2的16位模數轉換器操作 [9] 配置RA6T2 ADC模塊 (6)
    的頭像 發表于 05-08 08:06 ?437次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [9] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (<b class='flag-5'>6</b>)

    RA6T2的16位模數轉換器操作 [10] 配置RA6T2 ADC模塊 (7)

    RA6T2的16位模數轉換器操作 [10] 配置RA6T2 ADC模塊 (7)
    的頭像 發表于 05-15 08:06 ?430次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [10] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (7)

    RA6T2的16位模數轉換器操作 [11] 配置RA6T2 ADC模塊 (8)

    RA6T2的16位模數轉換器操作 [11] 配置RA6T2 ADC模塊 (8)
    的頭像 發表于 05-24 08:06 ?431次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數轉換器操作 [11] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (8)
    赌场百家乐官网的玩法技巧和规则 | 百家乐官网蓝盾在线现| 威尼斯人娱乐城导航网| 百家乐官网看盘技巧| 重庆百家乐的玩法技巧和规则| 八大胜百家乐官网现金网| 武汉百家乐庄闲和| 百家乐官网分析博彩正网| 百家乐单机游戏免费下| 百家乐官网棋牌作弊器| 大发888注册送彩金| 百家乐官网谋略| 六合彩开奖公告| 百家乐如何取胜| 百家乐官网开庄概率| 百家乐博娱乐网赌百家乐的玩法技巧和规则 | 百家乐赢赌场百家乐| 博娱乐城| 百家乐牌具公司| 百家乐官网换人| 大发888登不上| Bet百家乐官网娱乐城| 皇冠备用投注网| 百家乐打格式| 百家乐官网双峰县| 蒙特卡罗娱乐| 回力百家乐的玩法技巧和规则 | 百家乐赌场凯时娱乐| 百家乐官网赌博凯时娱乐| kk娱乐城送彩金| 豪博百家乐娱乐城| 澳门百家乐官网哪家信誉最好 | 三公百家乐官网在线哪里可以玩| 大发888赌场网址| 上海玩百家乐算不算违法| 百家乐官网汝河路| 青岛棋牌英雄| 永利高百家乐开户| 百家乐官网闲9点| 世界顶级赌场排名| 澳门百家乐国际|