女人荫蒂被添全过程13种图片,亚洲+欧美+在线,欧洲精品无码一区二区三区 ,在厨房拨开内裤进入毛片

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

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

3天內不再提示

【RA6M3 HMI Board評測挑戰】-瑞薩RA6M3上的CAN實踐

冬至子 ? 來源:qinyunti ? 作者:qinyunti ? 2023-10-17 14:55 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一.準備
基于RT-Thread Studio

1.1安裝BSP包
1.jpg

注意GNU工具鏈版本
1.jpg

1.2 芯片資料
1.3FSP
1.4代碼倉庫

1.5創建工程
菜單欄
文件->新建->RT-Thread項目
設置如下
1.jpg

2.jpg

接上串口P205 P206
115200-8-N-1
1.jpg

二.CAN模塊硬件部分介紹
1.jpg

TP5設置了一個測試點,可以測試Vref的VDD/2的電壓,輔助確認芯片是否正常。

R76 R77構成了120歐終端電阻,C67起到濾波作用,這個電容不能大,否則影響高速時信號邊沿,導致邊沿變遲緩可能導致采樣錯誤。

RS用于Slope-Control控制輸入,默認接GND即High-Speed模式。

1.jpg

三.CAN模塊介紹
參考《Renesas RA6M3 Group User’s Manual: Hardware》的《37. Controller Area Network (CAN) Module》

3.1特征
支持ISO11898-1 標準和擴展幀
支持最高1 Mbps
32個消息郵箱:每一個都可以獨立配置為接收或發送;或者24個配置為接受或發送,剩余的8個配置為4級收發FIFO。
支持數據幀和遠程幀接收,可配置只接收標準幀或者擴展幀或者混合幀,可配置單次接收模式,可配置溢出時數據是保存還是丟棄,每個郵箱可單獨配置接收完成中斷使能。
4個郵箱共用一個,一共8個接收過濾器,每個郵箱可單獨使能過濾。
支持數據幀和遠程幀發送,可配置只發送標準幀或者擴展幀或者混合幀,可配置單次發送模式,廣播功能,優先級可由ID或者郵箱序號決定,支持發送中止且有中止完成標志,每個郵箱可單獨配置接發送成中斷使能。
從總線斷開狀態恢復的模式轉換可選擇為:1.符合ISO11898-1規范2.總線斷開進入時自動進入CAN停止模式3.總線斷開完成時自動進入CAN停止模式4.通過軟件進入CAN停止模式5.通過軟件轉換到錯誤活動狀態。
?監控CAN總線錯誤,包括填充錯誤、格式錯誤、ACK錯誤、15位CRC錯誤、位錯誤和ACK分隔符錯誤。檢測到錯誤狀態的轉換,包括錯誤警告、被動錯誤、總線關閉進入和總線關閉恢復。支持讀取錯誤計數器。
使用16位計數器的時間戳功能,可選擇1位、2位、4位和8位時間周期的參考時鐘
支持五種中斷源:接收完成、發送完成、接收FIFO、發送FIFO和錯誤中斷。
停止CAN時鐘以降低功耗。
三個軟件支持單元:接收過濾器;郵箱搜索支持,包括接收郵箱搜索、發送郵箱搜索和郵件丟失搜索;通道搜索支持。
時鐘源來自PCLKB 或 CANMCLK
可用于評估的三種測試模式:僅聽模式;自檢模式0(外部環回);自檢模式1(內部環回)。
可以設置模塊停止狀態以降低功耗.

3.2框圖
1.jpg

3.3操作模式
CAN模塊的操作模式包括:CAN復位模式,CAN停止模式,CAN操作模式,CAN睡眠模式。狀態切換如下圖:
1.jpg

3.4時序設置
時序設置很重要
時鐘源
CAN模塊有一個CAN時鐘發生器,可通過BCR寄存器中的CCLKS和BRP[9:0]位進行設置。圖顯示了CAN時鐘發生器的框圖
CCLKS選擇時鐘源來自與PCLKB還是EXTAL
BPR設置時鐘分頻最后得到fCANCLK
1.jpg

3.5時序設置
1.jpg

2.jpg

3.6中斷
1.jpg

四.CAN驅動介紹
4.1添加CAN驅動
按如下設置并保存,也可以使用env設置
1.jpg

添加的代碼位置如下
1.jpg

4.2使能硬件CAN
右鍵點擊工程,打開env環境
1.jpg

2.jpg

3.jpg

1.jpg

2.jpg

4.3測試代碼
CANboardSConscript下添加

if GetDepend(['RT_USING_CAN']):
src += Glob('ports/can_test.c')
刷新scons配置
1.jpg

添加的測試代碼如下
1.jpg

該代碼使用can0,創建接收線程接收can數據,接收到后打印信息,同時導出命令can_sample,執行一次命令發送一幀CAN數據。

五.回環測試
rt_device_open后添加一行,設置為回環模式
rt_device_control(can_dev,RT_CAN_CMD_SET_MODE,RT_CAN_MODE_LOOPBACK);

編譯運行,help可以看到對應的命令can_sample
1.jpg

六.問題
can_sample can0
只能執行一次
1.jpg

static rt_device_t can_dev = NULL;

設置只有未初始化才初始化

if(can_dev == NULL)
{
    if (argc == 2)
    {
        rt_strncpy(can_name, argv[1], RT_NAME_MAX);
    }
    else
    {
        rt_strncpy(can_name, CAN_DEV_NAME, RT_NAME_MAX);
    }
    can_dev = rt_device_find(can_name);
    if (!can_dev)
    {
        rt_kprintf("find %s failed!n", can_name);
        return RT_ERROR;
    }
    rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO);
    res = rt_device_open(can_dev, RT_DEVICE_FLAG_INT_TX | RT_DEVICE_FLAG_INT_RX);
    RT_ASSERT(res == RT_EOK);
    rt_device_control(can_dev,RT_CAN_CMD_SET_MODE,RT_CAN_MODE_LOOPBACK);
    thread = rt_thread_create("can_rx", can_rx_thread, RT_NULL, 1024, 25, 10);
    if (thread != RT_NULL)
    {
        rt_thread_startup(thread);
    }
    else
    {
        rt_kprintf("create can_rx thread failed!n");
    }

}
這樣就可以反復進行can_sample測試

1.jpg
七.CAN驅動分析
7.1測試代碼
boardportscan_test.c
見前面的測試

7.2硬件抽象層
librariesHAL_Driversdrv_can.c drv_can.h
導出了初始化函數,啟動時自動根據鏈接腳本放置的位置調用該函數
INIT_BOARD_EXPORT(rt_hw_can_init);

通過接口
result = rt_hw_can_register(&can_obj[i].can_dev, can_obj[i].config->name, can_obj[i].can_dev.ops, RT_NULL);
注冊幾個關鍵的數據結構
重點是如下結構體,即操作底層硬件的接口,驅動層即通過注冊的該opt結構進行底層硬件操作

const struct rt_can_ops ra_can_ops =
{
.configure = ra_can_configure,
.control = ra_can_control,
.sendmsg = ra_can_sendmsg,
.recvmsg = ra_can_recvmsg
};
librariesHAL_Driversconfigra2l1can_config.h中的

#if defined(BSP_USING_CAN0)
#ifndef CAN0_CONFIG
#define CAN0_CONFIG
{
.name = "can0",
.num_of_mailboxs = CAN_NO_OF_MAILBOXES_g_can0,
.p_api_ctrl = &g_can0_ctrl,
.p_cfg = &g_can0_cfg,
}
#endif /* CAN0_CONFIG /
#endif /
BSP_USING_CAN0 */
則定義的芯片相關的操作數據結構和設備名字。

7.3組件層
rt-threadcomponentsdriverscancan.c

導出了命令
MSH_CMD_EXPORT_ALIAS(cmd_canstat, canstat, stat can device status);

rt_hw_can_register注冊以下接口,即組件設備的驅動API

device- >init        = rt_can_init;
device- >open        = rt_can_open;
device- >close       = rt_can_close;
device- >read        = rt_can_read;
device- >write       = rt_can_write;

device->control = rt_can_control;
7.4設備層
更通用的設備層通過設備名找到設備句柄
rt_device_find

設備打開等操作時rt_device_open通過設備句柄調用組件層的API,

rt_can_open等,而組件層調用硬件抽象層的接口,硬件抽象層再調用IC的固件庫實現硬件操作。

八.總結
得益于RT_Thread比較好的設備驅動框架,設備驅動的擴展非常方便,直接配置IC固件庫,實現硬件抽象層即可,組件層和設備層驅動都是通用的。

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

    關注

    10

    文章

    3664

    瀏覽量

    107687
  • PCB板
    +關注

    關注

    27

    文章

    1473

    瀏覽量

    53280
  • CAN模塊
    +關注

    關注

    0

    文章

    25

    瀏覽量

    9005
  • GNU
    GNU
    +關注

    關注

    0

    文章

    143

    瀏覽量

    17836
  • RT-Thread
    +關注

    關注

    32

    文章

    1387

    瀏覽量

    41689
  • RA6M3
    +關注

    關注

    0

    文章

    52

    瀏覽量

    268
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    RA6M3數據手冊(英)

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

    RA6M3硬件用戶手冊(英)

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

    RA6M3數據手冊(中英)

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

    RA6M3硬件用戶手冊(中英)

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

    RA6M3 組用戶手冊:硬件

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

    RA6M3 組數據表

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

    vscode+pyocd+daplink調試ra6m3

    拿到了ra6m3的板子,發現使用RT-Thread Stduio下載速度很慢,就想著搭建一個vscode的環境試試。
    的頭像 發表于 06-07 11:51 ?1737次閱讀

    RA6M3 HMI Board 之RTC實踐

    開發環境: RT-Thread Studio:v2.2.6 開發板:RA6M3 HMI Board開發板 MCU:R7FA6M3AH3CFB 1 R
    的頭像 發表于 06-21 21:31 ?3364次閱讀
    <b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b> 之RTC<b class='flag-5'>實踐</b>

    RA6M3 組用戶手冊:硬件

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

    RA6M3 組數據表

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

    【線下培訓】上海臨港: RT-Thread × 工業監視器 RA6M3 HMI Board解決方案

    RT-Thread 與將于10月14日在上海臨港舉行一場線下培訓。 本次培訓將為開發者們帶來期待已久的熱門技術主題, RT-Thread × 工業監視器
    的頭像 發表于 09-07 17:40 ?1076次閱讀
    【線下培訓】上海臨港: RT-Thread × <b class='flag-5'>瑞</b><b class='flag-5'>薩</b> 工業監視器 <b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>解決方案

    vscode+pyocd+daplink調試ra6m3步驟

    拿到了ra6m3的板子,發現使用RT-Thread Stduio下載速度很慢,就想著搭建一個vscode的環境試試。
    的頭像 發表于 09-14 14:47 ?2304次閱讀

    RA6M3 HMI-Board Video Demo 上手指南

    高性能芯片 RA6M3 及 RT-Thread 和 LVGL 軟件生態,HMI Board 不僅硬件性能強勁,同時軟件生態豐富,助力開發者快速開發出 GUI 智能硬件產品。 本示例開源鏈接: https
    的頭像 發表于 09-15 18:25 ?2460次閱讀
    <b class='flag-5'>瑞</b><b class='flag-5'>薩</b><b class='flag-5'>RA6M3</b> <b class='flag-5'>HMI-Board</b> Video Demo 上手指南

    RA6M3 開發實踐指南-UART實踐

    RT-Thread即將發布一系列RA6M3外設驅動的實踐指南,我們將使用RA6M3 HMI-Boar
    的頭像 發表于 09-23 12:15 ?1891次閱讀

    RA6M3 RT-Thread* LVGL HMI Board開發實踐指南-GPIO實踐

    RT-Thread即將發布一系列RA6M3外設驅動的實踐指南,我們將使用RA6M3 HMI-Boar
    的頭像 發表于 11-30 19:05 ?1826次閱讀
    <b class='flag-5'>RA6M3</b> RT-Thread* LVGL <b class='flag-5'>HMI</b> <b class='flag-5'>Board</b>開發<b class='flag-5'>實踐</b>指南-GPIO<b class='flag-5'>實踐</b>
    主站蜘蛛池模板: 杭州市| 高邑县| 大悟县| 昌黎县| 和田县| 永寿县| 兴和县| 河源市| 海晏县| 明溪县| 东源县| 忻城县| 福海县| 藁城市| 樟树市| 浠水县| 镇平县| 江北区| 囊谦县| 涿州市| 盘山县| 朝阳市| 根河市| 图们市| 嘉鱼县| 宣城市| 南康市| 湖口县| 南通市| 卢湾区| 太仓市| 北辰区| 天柱县| 江油市| 石首市| 东明县| 东海县| 天峻县| 武穴市| 保德县| 昌平区|