精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

RA6T2的IIC使用DTC讀寫(xiě)eeprom

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

介紹

客戶(hù)在初次使用e2 studio開(kāi)發(fā)程序的時(shí)候不知道如何使用IDE,本文以RA6T2為例子,詳細(xì)地介紹了在一個(gè)新建的程序中,通過(guò)配置實(shí)現(xiàn)IIC對(duì)eeprom的讀寫(xiě)。

在e2 studio中新建一個(gè)程序,點(diǎn)擊configuration.xml文件打開(kāi)配置界面。

設(shè)置IIC模塊的時(shí)鐘源,在IIC通信的時(shí)候用來(lái)給SCL提供時(shí)鐘信號(hào)。打開(kāi)文檔查看PLL時(shí)鐘的寄存器配置,PLL一共需要配置三個(gè)參數(shù),分別是輸入鎖相環(huán)分頻系數(shù)、時(shí)鐘源、PLL倍頻因子。

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

點(diǎn)擊Clocks配置時(shí)鐘,這里使用了PLL倍頻時(shí)鐘,PLL倍頻時(shí)鐘可以選擇主時(shí)鐘或者內(nèi)部高速振蕩器作為時(shí)鐘源,這里選用內(nèi)部高速振蕩器HOCO作為PLL倍頻時(shí)鐘源。

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

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

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

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

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

點(diǎn)擊右邊的設(shè)置按鈕,并點(diǎn)擊FSP Visualization 可以打開(kāi)芯片的圖形界面,在點(diǎn)擊IIC0,在芯片的圖形界面上就會(huì)顯示出IIC0的B組引腳PC10和PC11在芯片中的位置。也可以點(diǎn)擊芯片圖形界面上的引腳配置相應(yīng)的引腳功能。

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

點(diǎn)擊Stacks,會(huì)出現(xiàn)下圖所示的配置驅(qū)動(dòng)代碼的界面,e2 studio會(huì)根據(jù)用戶(hù)的配置,自動(dòng)生成相應(yīng)驅(qū)動(dòng)代碼。點(diǎn)擊New Stack新建一個(gè)Stack,在New Stack里面選擇Connectivity配置通信類(lèi)的驅(qū)動(dòng)代碼,在Connectivity的下一級(jí)目錄中點(diǎn)擊I2C Master(r_iic_b_master),生成IIC Master的驅(qū)動(dòng),在RA6T2中一個(gè)共有5種IIC類(lèi)型可以選,這里使用IIC作為主機(jī)模式使用所以選擇r_iic_b_master,r_iic_b_slave是將IIC設(shè)置成從機(jī)模式,r_sci_b_master是將通用串行接口SCI設(shè)置成簡(jiǎn)易IIC主機(jī)模式,其他兩個(gè)是作為從機(jī)模式使用。

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

點(diǎn)擊圖片上右上角紅框框出來(lái)的設(shè)置和g_i2c_master0 I2C Master(r_iic_b_master),再點(diǎn)擊屬性界面,就可以調(diào)出IIC的配置界面。

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

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

DTC全稱(chēng)叫Data Transfer Controller(數(shù)據(jù)傳送控制器),功能與DMA類(lèi)似,點(diǎn)擊Stacks,打開(kāi)驅(qū)動(dòng)配置界面,在配置好的g_i2c_master0 I2C Master(r_iic_b_master)模塊下有兩個(gè)小模塊,分別是Add DTC Driver for Transmission[Optional]增加IIC的發(fā)送DTC功能,Add DTC Driver for Reception[Optional]增加IIC的接收DTC功能。左鍵點(diǎn)擊Add DTC Driver for Transmission[Optional],彈出new->Transfer(r_dtc),左鍵點(diǎn)擊Transfer(r_dtc)生成DTC配置文件。

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

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

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

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

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

左鍵點(diǎn)擊紅框內(nèi)的Generate Project Content將配置好的信息生成相應(yīng)的驅(qū)動(dòng)代碼。

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

下圖是經(jīng)過(guò)屬性配置后自動(dòng)生成的IIC初始化代碼,這個(gè)函數(shù)在工程目錄下的ra->fsp->src->r_iic_b_master-> r_iic_b_master.c文件里面,函數(shù)調(diào)用方法如下:

fsp_err_t err;

err = R_IIC_B_MASTER_Open (&g_i2c_master0_ctrl, &g_i2c_master0_cfg);

R_IIC_B_MASTER_Open函數(shù)有一個(gè)fsp_err_t類(lèi)型的返回值,如果函數(shù)調(diào)用成功,則會(huì)返回FSP_SUCCESS,否則返回其他錯(cuò)誤提示。

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

函數(shù)里面需要傳入兩個(gè)參數(shù),這個(gè)兩個(gè)參數(shù)是在配置IIC的時(shí)候系統(tǒng)自動(dòng)生成的,參數(shù)在工程目錄下的ra_gen->hal_data.c文件里面。

g_i2c_master0_ctrl是用來(lái)記錄IIC的狀態(tài)信息,g_i2c_master0_cfg用來(lái)保存IIC的配置信息。

如果配置了DTC功能,在R_IIC_B_MASTER_Open函數(shù)里面會(huì)根據(jù)配置信息,選擇以DTC的模式來(lái)通信。

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

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

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

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

代碼向eeprom里面寫(xiě)入64字節(jié)的數(shù)據(jù),IIC一共要發(fā)送67字節(jié)的數(shù)據(jù),其中第一個(gè)字節(jié)是發(fā)送eeprom的設(shè)備地址,在R_IIC_B_MASTER_Write函數(shù)中已經(jīng)寫(xiě)入IIC的設(shè)備地址了(配置IIC的時(shí)候填入的),所以還要再發(fā)送66個(gè)字節(jié)的數(shù)據(jù);第二個(gè)和第三個(gè)數(shù)據(jù)是eeprom的存儲(chǔ)地址;第4到第67是需要發(fā)送的數(shù)據(jù),一共是64字節(jié),代碼上發(fā)送的是0~63的uint8_t類(lèi)型的數(shù)據(jù)。

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

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

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

代碼向eeprom里面讀取64字節(jié)的數(shù)據(jù)。read_buffer_ID是為2個(gè)字節(jié),這兩個(gè)字節(jié)對(duì)應(yīng)的是需要讀取的eeprom數(shù)據(jù)的存儲(chǔ)位置;read_buffer 是一個(gè)uint8_t類(lèi)型的數(shù)組,用來(lái)存儲(chǔ)從eeprom讀取出來(lái)的64字節(jié)的數(shù)據(jù);read_buffer_count表示要從eeprom里面讀取64個(gè)字節(jié)的數(shù)據(jù)。

想要讀取eeprom里面的數(shù)據(jù),要先通過(guò)IIC發(fā)送設(shè)備地址,以及需要讀取的eeprom存儲(chǔ)地址,下圖代碼通過(guò)R_IIC_B_MASTER_Write函數(shù)向IIC發(fā)送了設(shè)備地址和read_buffer_ID(2個(gè)字節(jié)的eeprom存儲(chǔ)地址),這時(shí)候通信還沒(méi)有結(jié)束,所以R_IIC_B_MASTER_Write函數(shù)的最后一個(gè)參數(shù)填的是ture,繼續(xù)進(jìn)行通信,validate_i2c_event函數(shù)是等待eeprom應(yīng)答,當(dāng)eeprom應(yīng)答后,再通過(guò)R_IIC_B_MASTER_Read函數(shù)讀取數(shù)據(jù),從R_IIC_B_MASTER_Write函數(shù)寫(xiě)入的地址開(kāi)始計(jì)算,遞增讀取eeprom里面的數(shù)據(jù),一個(gè)64字節(jié)的數(shù)據(jù)。

結(jié)論

通過(guò)上面的設(shè)置實(shí)現(xiàn)了RA6T2的IIC使用DTC讀寫(xiě)eeprom。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1010

    瀏覽量

    81404
  • IIC
    IIC
    +關(guān)注

    關(guān)注

    11

    文章

    300

    瀏覽量

    38274

原文標(biāo)題:RA6T2的IIC使用DTC讀寫(xiě)eeprom

文章出處:【微信號(hào):瑞薩MCU小百科,微信公眾號(hào):瑞薩MCU小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    RA6T2數(shù)據(jù)手冊(cè)(英)

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

    RA6T2硬件用戶(hù)手冊(cè)(英)

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

    RA6T2數(shù)據(jù)手冊(cè)(中英)

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

    RA6T2 組數(shù)據(jù)表

    RA6T2 組數(shù)據(jù)表
    發(fā)表于 01-10 19:05 ?0次下載
    <b class='flag-5'>RA6T2</b> 組數(shù)據(jù)表

    RA6T2 組用戶(hù)手冊(cè):硬件

    RA6T2 組用戶(hù)手冊(cè):硬件
    發(fā)表于 01-10 19:05 ?0次下載
    <b class='flag-5'>RA6T2</b> 組用戶(hù)手冊(cè):硬件

    RA6T2組數(shù)據(jù)表

    RA6T2 組數(shù)據(jù)表
    發(fā)表于 06-30 19:51 ?0次下載
    <b class='flag-5'>RA6T2</b>組數(shù)據(jù)表

    RA6T2組用戶(hù)手冊(cè):硬件

    RA6T2 組用戶(hù)手冊(cè):硬件
    發(fā)表于 06-30 19:51 ?0次下載
    <b class='flag-5'>RA6T2</b>組用戶(hù)手冊(cè):硬件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    RA6T2的16位模數(shù)轉(zhuǎn)換器操作 [11] 配置RA6T2 ADC模塊 (8)
    的頭像 發(fā)表于 05-24 08:06 ?304次閱讀
    <b class='flag-5'>RA6T2</b>的16位模數(shù)轉(zhuǎn)換器操作 [11] 配置<b class='flag-5'>RA6T2</b> ADC模塊 (8)