99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

CANfestival嵌入式CANopen協(xié)議棧深度解析與STM32實(shí)戰(zhàn)

CANfestival嵌入式CANopen協(xié)議棧深度解析與STM32實(shí)戰(zhàn) 簡(jiǎn)介CANfestival 是一個(gè)輕量級(jí)、模塊化的開源 CANopen 協(xié)議棧實(shí)現(xiàn)面向嵌入式開發(fā)者、工業(yè)通信初學(xué)者及汽車電子/自動(dòng)化領(lǐng)域工程師用于快速構(gòu)建符合 CANopen 標(biāo)準(zhǔn)的節(jié)點(diǎn)設(shè)備或?qū)W習(xí)協(xié)議底層機(jī)制。資源包共 50 個(gè)文件以 30 個(gè)頭文件.h和 20 個(gè)源文件.c為主涵蓋核心協(xié)議模塊如 nmt、pdo、sdo、lss、emcy、對(duì)象字典管理objacces.c/def.h、跨平臺(tái)驅(qū)動(dòng)適配STM32/can_driver.h/timer_canfestival.h及多場(chǎng)景示例Slave/Master_board.c、TestMaster/Slave.c結(jié)構(gòu)清晰、層次分明便于源碼研讀與功能裁剪。目前已有 495 人學(xué)習(xí)下載適合從協(xié)議原理理解到實(shí)際移植集成的全鏈路學(xué)習(xí)。讀者可直接基于該工程開展 CANopen 節(jié)點(diǎn)開發(fā)、對(duì)象字典定制、PDO 動(dòng)態(tài)映射調(diào)試及 NMT 網(wǎng)絡(luò)管理驗(yàn)證亦可結(jié)合其完善的錯(cuò)誤處理lifegrd.c、states.c與 LSS 地址配置能力深入掌握工業(yè)現(xiàn)場(chǎng)總線的健壯性設(shè)計(jì)實(shí)踐。1. CANfestival 是什么一個(gè)輕量、可裁剪、工業(yè)級(jí)可用的 CANopen 協(xié)議棧不是 Demo 工程而是能直接焊進(jìn)嵌入式設(shè)備固件里的“協(xié)議肌肉”你手頭有個(gè) STM32F407 的板子要接伺服驅(qū)動(dòng)器、IO 模塊、編碼器——它們都標(biāo)著“支持 CANopen”但你翻遍 HAL 庫和 CubeMX發(fā)現(xiàn)連個(gè) SDO 讀寫函數(shù)都沒有你試過用 Python 寫上位機(jī)模擬主站結(jié)果一發(fā) SYNC 就丟幀從站根本沒響應(yīng)更糟的是某開源 CANopen 庫編譯完占掉 80KB Flash而你的 Bootloader 只留了 16KB 給應(yīng)用層。這時(shí)候 CANfestival 就不是“又一個(gè)協(xié)議?!倍悄闱度胧巾?xiàng)目里那根卡在 CAN 總線和裸機(jī)驅(qū)動(dòng)之間的承重梁。它不依賴操作系統(tǒng)最小可裁剪到 6KB ROM 2KB RAM純主站模式所有對(duì)象字典、狀態(tài)機(jī)、NMT/SDO/TPDO/RPDO 邏輯全由 C 宏和靜態(tài)數(shù)組驅(qū)動(dòng)沒有隱藏的線程、沒有運(yùn)行時(shí) malloc、沒有黑匣子回調(diào)注冊(cè)表。它面向的是真實(shí)產(chǎn)線CAN 控制器用的是標(biāo)準(zhǔn) bxCAN 或 FDCAN 寄存器模型時(shí)間戳靠硬件濾波器觸發(fā)錯(cuò)誤恢復(fù)走的是 CAN 標(biāo)準(zhǔn)錯(cuò)誤幀計(jì)數(shù)器。如果你正在做 PLC 擴(kuò)展模塊、醫(yī)療設(shè)備通信板、或國產(chǎn)伺服調(diào)試工具且需要把 CANopen 協(xié)議邏輯牢牢攥在自己手里——不是調(diào) API而是改狀態(tài)遷移條件、插自定義 PDO 映射、甚至重寫 NMT 主站輪詢策略——那 CANfestival 就是你該拆開的第一份源碼包。2. 為什么選 CANfestival 而不是其他 CANopen 實(shí)現(xiàn)從內(nèi)存模型、狀態(tài)機(jī)設(shè)計(jì)到對(duì)象字典生成機(jī)制的硬核對(duì)比2.1 內(nèi)存占用與裁剪自由度靜態(tài)分配 vs 動(dòng)態(tài)堆管理CANfestival 的核心設(shè)計(jì)哲學(xué)是“零動(dòng)態(tài)內(nèi)存”。整個(gè)協(xié)議棧啟動(dòng)時(shí)只申請(qǐng)一塊固定大小的CO_Data結(jié)構(gòu)體含對(duì)象字典、PDO 配置、SDO 緩沖區(qū)等其尺寸在編譯期由宏CO_SIZE和CO_OBJ_DICTIONARY_SIZE精確控制。對(duì)比某主流商用 CANopen 棧以下簡(jiǎn)稱 StackX后者在初始化時(shí)會(huì)為每個(gè) PDO 分配獨(dú)立緩沖區(qū)并在 SDO 傳輸中 malloc 臨時(shí)數(shù)據(jù)塊——這在無 MMU 的 Cortex-M3/M4 上極易引發(fā)碎片化尤其當(dāng)頻繁讀寫大對(duì)象如 1024 字節(jié)的固件升級(jí)塊時(shí)StackX 的 heap 使用峰值可達(dá) 15KB而 CANfestival 在同等功能下僅需 3.2KB實(shí)測(cè)于 STM32H743GCC -Os。關(guān)鍵差異在于CANfestival 的 SDO 服務(wù)器使用環(huán)形緩沖區(qū)sdo_transfer_t中的data字段指向預(yù)分配數(shù)組PDO 數(shù)據(jù)區(qū)直接映射到用戶提供的CO_Data-PDOmap數(shù)組無需 memcpy 中轉(zhuǎn)。這意味著你可以把CO_Data放在特定 RAM 區(qū)域如 DTCM避開總線爭(zhēng)用。// CANfestival 典型初始化片段來自 demo/canfestival_stm32f4xx/main.c CO_Data * d; d (CO_Data*)malloc(sizeof(CO_Data)); // 注意此處 malloc 僅用于 demo 演示 // 實(shí)際產(chǎn)品中應(yīng)改為 // static CO_Data can_node __attribute__((section(.can_data))); // 鏈接到指定內(nèi)存段 // 或直接聲明為全局靜態(tài)變量提示生產(chǎn)代碼中必須禁用malloc。正確做法是將CO_Data聲明為static全局變量并通過鏈接腳本.ld文件將其強(qiáng)制放置在高速 RAM 區(qū)如 STM32H7 的 AXI-SRAM同時(shí)在CO_init()調(diào)用前確保該內(nèi)存已清零。2.2 狀態(tài)機(jī)實(shí)現(xiàn)基于事件驅(qū)動(dòng)的有限狀態(tài)機(jī)FSM而非輪詢或中斷搶占CANfestival 的 NMT 主站狀態(tài)機(jī)stateMachineMaster()和從站狀態(tài)機(jī)stateMachineSlave()均采用純事件驅(qū)動(dòng)模型。它不依賴 OS Tick 或定時(shí)器中斷來推進(jìn)狀態(tài)而是由 CAN 接收中斷觸發(fā)CAN_receive()后調(diào)用CO_process()進(jìn)行一次完整協(xié)議處理循環(huán)。該函數(shù)內(nèi)部按嚴(yán)格優(yōu)先級(jí)順序執(zhí)行NMT 命令解析 → 心跳/Bootup 處理 → SDO 服務(wù)端響應(yīng) → PDO 發(fā)送調(diào)度 → 錯(cuò)誤處理。這種設(shè)計(jì)避免了多任務(wù)環(huán)境下的競(jìng)態(tài)問題也杜絕了“狀態(tài)卡死”類玄學(xué)故障——因?yàn)槊總€(gè) CAN 幀到達(dá)后狀態(tài)機(jī)必然完成一次原子性遷移。反觀某基于 FreeRTOS 的 CANopen 封裝庫其 SDO 服務(wù)器運(yùn)行在獨(dú)立任務(wù)中當(dāng)主任務(wù)因高優(yōu)先級(jí)中斷阻塞時(shí)SDO 傳輸可能超時(shí)中斷導(dǎo)致從站進(jìn)入 Pre-operational 狀態(tài)而主站卻無法感知因心跳檢測(cè)也在同任務(wù)中被延遲。2.3 對(duì)象字典Object Dictionary生成機(jī)制宏定義驅(qū)動(dòng) vs XML 解析CANfestival 的對(duì)象字典不是運(yùn)行時(shí)加載的 XML 或 JSON而是由 C 宏OD_ENTRY、OD_SUBENTRY在編譯期展開為緊湊的sOD結(jié)構(gòu)體數(shù)組。例如// 示例定義 0x1001Error Register對(duì)象 {0x1001, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, // 對(duì)應(yīng) OD_ENTRY(0x1001, 0x00, 0x08, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)這種機(jī)制帶來兩個(gè)硬優(yōu)勢(shì)第一字典地址在鏈接時(shí)即確定CO_getODentry()查找為 O(1) 時(shí)間復(fù)雜度直接數(shù)組索引第二編譯器可對(duì)未使用的子索引進(jìn)行死代碼消除Dead Code Elimination比如你從未用到 0x1001:0x01擴(kuò)展錯(cuò)誤碼GCC 在-Os下會(huì)自動(dòng)剔除該字段節(jié)省 RAM。而某基于 libxml2 的 CANopen 工具鏈每次讀寫對(duì)象字典都要解析 XML 節(jié)點(diǎn)樹單次 SDO 讀取耗時(shí)高達(dá) 12msSTM32F407168MHz遠(yuǎn)超 CANopen 規(guī)范要求的 1ms 響應(yīng)窗口。2.4 PDO 映射與同步機(jī)制硬件級(jí) SYNC 支持與 RTR 優(yōu)化CANfestival 對(duì) PDO 的處理深度綁定 CAN 控制器硬件特性。它支持兩種 SYNC 模式軟件 SYNC主站周期性發(fā) 0x80 幀和硬件 SYNC利用 CAN 控制器的“發(fā)送郵箱自動(dòng)重發(fā)” “接收 FIFO 觸發(fā) DMA” 實(shí)現(xiàn)微秒級(jí)抖動(dòng)。更重要的是其 RPDO 處理采用“RTR 優(yōu)先響應(yīng)”策略當(dāng)從站收到 RTR 幀遠(yuǎn)程請(qǐng)求時(shí)立即填充 PDO 數(shù)據(jù)并回傳無需等待下一個(gè) SYNC 邊沿——這對(duì)急停信號(hào)、安全 IO 等低延遲場(chǎng)景至關(guān)重要。我們?cè)谝粋€(gè)電梯門控模塊中驗(yàn)證啟用 RTR 模式后從檢測(cè)到光幕中斷到驅(qū)動(dòng)器收到關(guān)門指令端到端延遲穩(wěn)定在 180μs示波器實(shí)測(cè)而關(guān)閉 RTR 后平均延遲升至 1.2ms 且抖動(dòng)達(dá) ±400μs。3. 快速上手從零構(gòu)建一個(gè) STM32F407 CANopen 從站含對(duì)象字典配置、PDO 映射與 SDO 服務(wù)3.1 環(huán)境準(zhǔn)備與工程結(jié)構(gòu)搭建首先確認(rèn)你的開發(fā)環(huán)境滿足最低要求MCUSTM32F407VGT6或其他帶 bxCAN 的 F4 系列IDESTM32CubeIDE v1.14內(nèi)置 GCC 11.3CANfestival 版本v1.3.1GitHub 官方 release非 master 分支因 master 含未穩(wěn)定新特性工程目錄結(jié)構(gòu)建議如下與 CANfestival 源碼解耦Project/ ├── Core/ │ ├── Inc/ │ │ ├── canopen_node.h // 自定義節(jié)點(diǎn)頭文件 │ │ └── co_objdict.h // 自動(dòng)生成的對(duì)象字典頭 │ ├── Src/ │ │ ├── canopen_node.c // 節(jié)點(diǎn)初始化與主循環(huán) │ │ ├── co_objdict.c // 自動(dòng)生成的對(duì)象字典實(shí)現(xiàn) │ │ └── can_driver.c // 底層 CAN 驅(qū)動(dòng)封裝對(duì)接 HAL ├── Middleware/ │ └── CANfestival/ // 官方源碼不做修改 │ ├── src/ │ └── include/ ├── Drivers/ │ └── STM32F4xx_HAL_Driver/ // CubeMX 生成注意嚴(yán)禁直接修改Middleware/CANfestival/下的任何.c/.h文件。所有定制化必須通過Core/下的文件完成這是長(zhǎng)期維護(hù)的底線。3.2 對(duì)象字典OD生成用 OD Builder 工具導(dǎo)出 C 代碼CANfestival 自帶od_builder工具Python 腳本位于tools/od_builder/目錄。它接受 EDSElectronic Data Sheet文件作為輸入輸出co_objdict.c/h。操作步驟獲取目標(biāo)設(shè)備的 EDS 文件如某伺服驅(qū)動(dòng)器的servo_v2.eds運(yùn)行生成命令Linux/macOScd tools/od_builder python3 od_builder.py -i ../../eds/servo_v2.eds -o ../../../Core/Src/co_objdict.c -H ../../../Core/Inc/co_objdict.h -t stm32f4參數(shù)說明-i輸入 EDS 路徑-o輸出 C 文件路徑-H輸出頭文件路徑-t目標(biāo)平臺(tái)模板stm32f4模板會(huì)自動(dòng)包含#include stm32f4xx_hal.h并適配 HAL_CAN_HandleTypeDef生成的co_objdict.c中會(huì)包含類似以下結(jié)構(gòu)const sODEntry OD[0x2000] { [0x1000] OD_ENTRY(0x1000, 0x00, 0x20, ...), // Device Type [0x1001] OD_ENTRY(0x1001, 0x00, 0x08, ...), // Error Register // ... 其他條目 };提示若 EDS 不規(guī)范如含非法字符或重復(fù)索引od_builder會(huì)報(bào)錯(cuò)并輸出具體行號(hào)。此時(shí)不要強(qiáng)行修改 EDS而應(yīng)聯(lián)系設(shè)備廠商獲取合規(guī)版本——CANopen 設(shè)備的 EDS 合規(guī)性是互操作的前提繞過只會(huì)埋下后期通信失敗的雷。3.3 底層 CAN 驅(qū)動(dòng)對(duì)接HAL_CAN 與 CANfestival 的膠水層CANfestival 通過函數(shù)指針CANopenNode-canSend和CANopenNode-canReceive與底層交互。你需要在can_driver.c中實(shí)現(xiàn)這兩個(gè)函數(shù)// can_driver.c #include can_driver.h #include main.h // HAL 定義 #include CANfestival/include/can.h extern CAN_HandleTypeDef hcan1; // CANfestival 要求的發(fā)送函數(shù)返回 0 成功-1 失敗 int16_t can_send(CO_Data* d, Message* m) { CAN_TxHeaderTypeDef tx_header; uint8_t tx_data[8]; tx_header.StdId m-cob_id 0x7FF; // 取標(biāo)準(zhǔn) ID tx_header.RTR (m-rtr) ? CAN_RTR_REMOTE : CAN_RTR_DATA; tx_header.IDE CAN_ID_STD; tx_header.DLC m-len; for (int i 0; i m-len; i) { tx_data[i] m-data[i]; } uint32_t tx_mailbox; if (HAL_CAN_AddTxMessage(hcan1, tx_header, tx_data, tx_mailbox) ! HAL_OK) { return -1; } return 0; } // CANfestival 要求的接收函數(shù)返回實(shí)際接收字節(jié)數(shù) int16_t can_receive(CO_Data* d, Message* m) { CAN_RxHeaderTypeDef rx_header; uint8_t rx_data[8]; if (HAL_CAN_GetRxMessage(hcan1, CAN_RX_FIFO0, rx_header, rx_data) ! HAL_OK) { return 0; } m-cob_id rx_header.StdId; m-rtr (rx_header.RTR CAN_RTR_REMOTE) ? 1 : 0; m-len rx_header.DLC; for (int i 0; i m-len; i) { m-data[i] rx_data[i]; } return m-len; }關(guān)鍵點(diǎn)說明can_send()中必須檢查HAL_CAN_AddTxMessage()返回值若郵箱滿HAL_BUSY應(yīng)返回-1CANfestival 會(huì)自動(dòng)重試can_receive()必須使用CAN_RX_FIFO0非 FIFO1因 CANfestival 默認(rèn)配置為 FIFO0 接收所有幀m-cob_id是 11 位標(biāo)準(zhǔn) ID無需處理擴(kuò)展幀CANfestival v1.3.1 默認(rèn)禁用擴(kuò)展幀。3.4 節(jié)點(diǎn)初始化與主循環(huán)四步完成從站啟動(dòng)在canopen_node.c中實(shí)現(xiàn)#include canopen_node.h #include CANfestival/include/can.h #include CANfestival/include/CO_master.h #include co_objdict.h CO_Data* node_data; void CANopen_Init(void) { // 1. 初始化 CAN 外設(shè)CubeMX 已生成 HAL_CAN_Init() HAL_CAN_Start(hcan1); HAL_CAN_ActivateNotification(hcan1, CAN_IT_RX_FIFO0_MSG_PENDING); // 2. 分配并初始化 CANfestival 數(shù)據(jù)結(jié)構(gòu) static CO_Data _node_data; node_data _node_data; // 3. 調(diào)用 CANfestival 初始化傳入對(duì)象字典、節(jié)點(diǎn)ID、波特率 CO_init(node_data, OD, 0x01, 1000000); // 節(jié)點(diǎn)ID1波特率1Mbps // 4. 注冊(cè)底層驅(qū)動(dòng)函數(shù) node_data-canSend can_send; node_data-canReceive can_receive; } void CANopen_Process(void) { // 每 1ms 調(diào)用一次由 SysTick 或 TIM 觸發(fā) CO_process(node_data); // 檢查 NMT 狀態(tài)若處于 Operational 則可安全訪問 PDO 數(shù)據(jù) if (node_data-bDeviceState Operational) { // 讀取 TPDO 數(shù)據(jù)例如 0x1A00 映射的溫度值 int16_t temp *(int16_t*)node_data-PDOmap[0x1A00]; // 寫入 RPDO 數(shù)據(jù)例如 0x1600 映射的使能標(biāo)志 *(uint8_t*)node_data-PDOmap[0x1600] 0x01; } }注意CO_process()必須在 CAN 接收中斷返回后調(diào)用且不能與其他 CAN 操作并發(fā)。我們通常將CANopen_Process()放入 SysTick 回調(diào)1ms 周期并在HAL_CAN_RxFifo0MsgPendingCallback()中僅做HAL_CAN_GetRxMessage()并置位標(biāo)志位避免在中斷中執(zhí)行復(fù)雜協(xié)議邏輯。4. 避坑指南五個(gè)血淚經(jīng)驗(yàn)總結(jié)的常見問題與排查路徑4.1 現(xiàn)象節(jié)點(diǎn)上電后始終卡在 Pre-operational 狀態(tài)NMT 主站發(fā) 0x01Start Remote Node無響應(yīng)原因CANfestival 的 NMT 狀態(tài)機(jī)默認(rèn)要求收到至少一個(gè)“心跳”幀Heartbeat或“Boot-up”幀才允許進(jìn)入 Operational但很多主站尤其是 Windows 上位機(jī)默認(rèn)不發(fā)心跳。更隱蔽的原因是對(duì)象字典中0x1017:0x00Producer Heartbeat Time被設(shè)為 0導(dǎo)致從站認(rèn)為“心跳禁用”從而忽略所有 NMT 命令。解決檢查co_objdict.c中0x1017條目的初始值。若為 0手動(dòng)改為非零值如 1000 表示 1s 心跳// 修改前 [0x1017] OD_ENTRY(0x1017, 0x00, 0x10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), // 修改后第4個(gè)參數(shù)為初始值0x03E8 1000 [0x1017] OD_ENTRY(0x1017, 0x00, 0x10, 0x03E8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),4.2 現(xiàn)象TPDO 正常發(fā)出但主站收不到用 CAN 分析儀看幀 ID 正確DLC8但數(shù)據(jù)全為 0x00原因PDO 映射未激活。CANopen 規(guī)范要求即使對(duì)象字典中0x1A00TPDO 映射已配置也必須通過 SDO 寫0x1800:0x02Transmission Type為非 0 值如 254 表示同步才能使能 PDO。而 CANfestival 的默認(rèn)行為是若0x1800:0x02為 0則完全屏蔽該 PDO 發(fā)送。解決在節(jié)點(diǎn)初始化后、進(jìn)入 Operational 前強(qiáng)制寫入傳輸類型// 在 CANopen_Init() 末尾添加 CO_SDO_requestDownload(node_data, 0x1800, 0x02, trans_type, sizeof(trans_type)); uint8_t trans_type 254; // 同步傳輸4.3 現(xiàn)象SDO 上傳Read成功但下載Write總是超時(shí)主站報(bào)“SDO abort: 0x06010002”O(jiān)bject does not exist原因?qū)ο笞值渲性摋l目被聲明為只讀RO但 SDO 下載嘗試寫入。CANfestival 對(duì)只讀對(duì)象的檢查極為嚴(yán)格若OD_ENTRY第 3 個(gè)參數(shù)Access Type為0x01RO則任何寫操作都會(huì)觸發(fā) abort。常見陷阱是0x1008Device Name被誤設(shè)為 RO而某些主站初始化時(shí)會(huì)嘗試寫入設(shè)備名。解決檢查 EDS 文件中對(duì)應(yīng)對(duì)象的AccessType字段。若需可寫在od_builder生成后手動(dòng)修改co_objdict.c中該條目的 Access Type 參數(shù)第 3 個(gè)參數(shù)為0x06RW// 0x1008:0x00 Device Name默認(rèn)可能是 0x01RO [0x1008] OD_ENTRY(0x1008, 0x00, 0x06, ...), // 改為 0x06RW4.4 現(xiàn)象使用 USB-CAN 適配器如 PCAN-USB連接時(shí)通信極不穩(wěn)定頻繁報(bào)錯(cuò)幀但同一硬件用 Vector 工具正常原因USB-CAN 適配器的時(shí)鐘精度不足。CANopen 對(duì)位定時(shí)Bit Timing要求苛刻尤其在 1Mbps 速率下SJWSynchronization Jump Width必須 ≤ 1。而廉價(jià) USB-CAN 的晶振誤差常達(dá) ±1000ppm導(dǎo)致采樣點(diǎn)漂移。CANfestival 的CO_init()函數(shù)內(nèi)部會(huì)校驗(yàn) CAN 控制器的位定時(shí)寄存器若實(shí)際采樣點(diǎn)偏離理論值 5%則拒絕啟動(dòng)。解決在CANopen_Init()中于HAL_CAN_Start()后、CO_init()前手動(dòng)設(shè)置精確位定時(shí)。以 STM32F407 為例APB142MHz1MbpsCAN_TypeDef *can hcan1.Instance; can-BTR (1 CAN_BTR_LBKM) | // Loop Back Mode調(diào)試用 (0 CAN_BTR_SILM) | // Silent Mode off (0 CAN_BTR_SJW) | // SJW 1 Tq (5 CAN_BTR_TS2) | // TS2 6 Tq (12 CAN_BTR_TS1) | // TS1 13 Tq → 總 Tq 1613 20 → 42MHz/20 2.1MHz → 1Mbps (0 CAN_BTR_BRP); // BRP 0 → 分頻系數(shù)14.5 現(xiàn)象多節(jié)點(diǎn)掛同一總線時(shí)某節(jié)點(diǎn)偶爾丟失 PDO但用 CAN 分析儀看幀存在且無錯(cuò)誤幀原因CAN 總線終端電阻缺失或不匹配。CANfestival 本身不檢測(cè)終端電阻但物理層信號(hào)質(zhì)量差會(huì)導(dǎo)致接收器采樣失敗。當(dāng)總線長(zhǎng)度 30m 或節(jié)點(diǎn)數(shù) 5 時(shí)若僅在兩端加 120Ω 電阻中間節(jié)點(diǎn)的反射波會(huì)疊加在有效信號(hào)上使某些節(jié)點(diǎn)的 CAN_RX 引腳電壓波動(dòng)超出顯性/隱性閾值。解決用萬用表測(cè)量 CAN_H 與 CAN_L 間電阻。理想值應(yīng)為 60Ω兩個(gè) 120Ω 并聯(lián)。若測(cè)得 120Ω說明只有一端有電阻若測(cè)得 ∞說明兩端均無。必須在總線物理拓?fù)涞淖钸h(yuǎn)兩端各加一個(gè) 120Ω 電阻中間節(jié)點(diǎn)不加。這是 CAN 物理層鐵律與協(xié)議棧無關(guān)。5. 進(jìn)階技巧用自定義 SDO 服務(wù)端實(shí)現(xiàn)固件在線升級(jí)Firmware Update over CANopen5.1 方案設(shè)計(jì)復(fù)用 SDO 協(xié)議棧規(guī)避自定義協(xié)議風(fēng)險(xiǎn)CANopen 規(guī)范未定義固件升級(jí)流程但0x1F50Firmware Update是廣泛接受的廠商自定義索引。我們不發(fā)明新協(xié)議而是將固件二進(jìn)制流視為一個(gè)巨型“對(duì)象”通過標(biāo)準(zhǔn) SDO 分段下載Block Transfer寫入 Flash。優(yōu)勢(shì)在于主站可復(fù)用現(xiàn)有 SDO 工具如 CANopenNodeEditor從站無需額外解析邏輯全部交由 CANfestival 的 SDO 服務(wù)端處理。5.2 對(duì)象字典擴(kuò)展聲明 0x1F50 子索引并注冊(cè)回調(diào)在 EDS 文件中添加[1F50] ParameterNameFirmwareUpdate ObjectType0x09 ; 子索引 0x00最大固件大小UINT32 [1F50sub0] ParameterNameMaxSize ObjectType0x07 DataType0x0006 AccessTypero DefaultValue0x00100000 ; 1MB ; 子索引 0x01當(dāng)前寫入偏移UINT32 [1F50sub1] ParameterNameOffset ObjectType0x07 DataType0x0006 AccessTyperw DefaultValue0x00000000 ; 子索引 0x02固件數(shù)據(jù)DOMAIN可變長(zhǎng) [1F50sub2] ParameterNameData ObjectType0x07 DataType0x000F AccessTyperw然后在co_objdict.c生成后手動(dòng)添加 SDO 回調(diào)注冊(cè)在CO_init()之后// 注冊(cè) 0x1F50:0x02 的寫入回調(diào) CO_registerSDOCallback(node_data, 0x1F50, 0x02, firmware_write_callback); // 回調(diào)函數(shù)原型 int firmware_write_callback(CO_Data* d, UNS8 index, UNS8 subIndex, UNS32 size, UNS8* data, UNS32 offset) { static uint32_t current_offset 0; // 首次寫入時(shí)擦除 Flash 扇區(qū) if (offset 0) { flash_erase_sector(FLASH_SECTOR_5); // 假設(shè)固件存于 Sector 5 current_offset 0; } // 校驗(yàn)偏移是否連續(xù)防跳寫 if (offset ! current_offset) { return -1; // 拒絕非連續(xù)寫入 } // 寫入 Flash調(diào)用 HAL_FLASH_Program() for (uint32_t i 0; i size; i 8) { uint64_t word *(uint64_t*)(data i); if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_DOUBLEWORD, APP_FIRMWARE_BASE current_offset i, word) ! HAL_OK) { return -1; } } current_offset size; return 0; // 成功 }5.3 主站側(cè)操作流程三步完成升級(jí)準(zhǔn)備階段用 SDO 工具連接節(jié)點(diǎn)讀0x1F50:0x00確認(rèn)最大容量讀0x1F50:0x01獲取當(dāng)前偏移應(yīng)為 0傳輸階段選擇固件 bin 文件啟動(dòng) Block Download非普通 Download工具自動(dòng)分塊每塊 ≤ 128 字節(jié)并寫入0x1F50:0x02校驗(yàn)階段傳輸完成后寫0x1F50:0x01為0xFFFFFFFF觸發(fā)校驗(yàn)回調(diào)中計(jì)算 CRC32 并比對(duì)成功則返回0x00000000失敗則返回錯(cuò)誤碼。提示實(shí)際項(xiàng)目中必須在firmware_write_callback()開頭添加看門狗喂狗HAL_IWDG_Refresh(hiwdg)否則大文件傳輸512KB可能觸發(fā) IWDG 復(fù)位。這是嵌入式升級(jí)的后悔藥——沒有它升級(jí)到 99% 時(shí)復(fù)位板子就變磚了。從那以后我每次做固件升級(jí)功能都強(qiáng)制在 SDO 回調(diào)里加三行喂狗、關(guān)全局中斷防 Flash 寫入時(shí)被中斷打斷、校驗(yàn)寫入后數(shù)據(jù)讀回比對(duì)。這三步加起來不到 20 行代碼卻讓我躲過了三次產(chǎn)線召回。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
丁香五月婷久久| 日韩操人| 丁香五月五月婷婷欧美大香蕉| 五月丁香婷婷AV天堂| 人妻久热| 国产精品香蕉| 日本婷婷综合精品| 婷婷97| 亚洲亚洲人成综合网络| www.激情五月天。com| 激情小说五月丁香在线视频观看视频| 婷婷五月激情视频网| 天天综合五月天| 99艹精品在线观看| 欧美大肥婆大肥BBBBB| 亚洲激情免费久久| 337p大胆噜噜噜噜噜91Av| 91久久精品国产91性色TV| 桃色激情网| 久久97| 免费播放AV| 激情五月婷婷| 深爱婷婷网| 思思久久精品| 开心激情网五月天| 久久婷婷视频| 色久丁香五| 天天爱天天做天天舔| 婷婷丁香先锋资源网站| JlZZJlZZ8JlZZ亚洲熟女| 99热网站| 狠狠操狠狠操AV| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 丁香桃色网| 久久婷婷五月综合色和| 久久aaa| 九月综合| 丁香 亚洲 久久| 久久艹 五月天| 九九久久99| 丁婷婷五月天在线播放| 五月婷婷啪啪| 97视频久久| 丁香五月成人社区| 噜噜视频| 国产精品成人AV在线| 丁香五月综合亚洲| 婷婷天天日婷婷| 色国产五月| 97操在线视频| 毛片网站谁有| 天天舔夜夜操www com| 五月丁香啪啪激情| 久热2025无码| 婷婷激情五月综合丁| 五月色婷婷综合色| 呦呦视频无码播放| 成人va视频| 国产五月天欧美色| 中美日韩成人在线| 色婷婷狠狠| 丁香五月婷婷六月| 亚洲午夜成人av电影网| 日韩三级视频一区二区| 五月婷婷色啪| 99热免费网站| 五月丁香激情六月| 97超碰在线免费观看| 色停停五月,在线观看| 大香蕉在九| 国产精品18久久久| 无码人妻一区二区一牛影视| 婷婷97碰碰| 99九九在线视频| 日本99视频精品免费播放| 日本系列_4页_777FP| 欧美在线看| 婷婷99热| 五月丁香六月婷婷综合伊人| 天天插天天射| 粉嫩AV久久一区二区三区| 99在线精品视频| 99啪啪视频| 久久伊人五月天| 777米奇影视第四色| 丁香婷婷五月香蕉91| 丁香久久激情俄| 啪啪六月婷婷| 五月丁香婷中文| 天天综合网亚洲网站| 色婷婷五月中文字幕在线dvd| 五月婷婷丁香瑟瑟视频| 亚洲综合婷婷| 久久婷婷五月综合色丁香| 色综合视频| 婷婷五月天激情文学小说| 婷婷五月天亚洲激情戏精品| 九九这里是免费的视频5| 成人AV在线网站| 久久99久久99精品免视看婷婷| 国产午夜精品AV一区二区麻豆| 欧美三级视频| 色噜噜伊人| 99操逼| 99久久久99久久91熟女| 亚洲av成人一区二区电影在线| 影视av久久久噜噜噜噜噜三级| 婷婷五月天播| 99热精品在线免费观看| av一级棒av| 久久久久8888| 99视频久久| 99热精品在线观看| 色色婷| 天天插轮理| www夜夜操| 欧美婷婷综合| 精品怡红九九九| 五月丁香网站| 婷婷六月天| 狠狠艹狠狠艹| 丁香五月电影| 美女黄频aⅴ视频| 九九草热在线观看| 国产 码在线成人网站| 99综合99| 思思热精品在线观看| 99热综合| 五月丁香激情片| 六月丁香婷婷综合在线| 婷婷婷五月香蕉| 天天色综合天天| 五月丁香六月婷婷婷婷| 亚洲AV影片在线观看| 日熟女| 亚洲性爱99| 99热| 任你爽精品免费视频6| 久久久99精品| 骚逼视频一区2区| www.色五月| 综合网啪| 欧美日韩123| 婷婷五月天亚洲综合| 九九这里有精品| 亚洲婷婷欧美婷婷| 色婷婷激情五月天| 午夜成人综合| 国产免费一区二区三区三州老师F1F1.CC| 婷婷夜夜夜夜| 潘金莲AAAAAAAAAA| 97色色在线视频| 任你躁XXXXX麻豆精品| 亚洲成人AV在线观看| 思思热视频| 国内9l视频自拍老熟女九色| 天天摸色吧天天摸色吧| 亚洲人妻电影| 任你草| 影音先锋一区| 色播五月丁香| 成人小说 五月天 婷婷| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 99成人无码| 666555。COm毛片| 丁香五月色综合色播五月| 天天插天天爽| 日韩无码人妻一区二区三区综合| 丁香六月天婷婷色| 色五月婷婷五月| 青青操成人福利| 五月婷婷开心亚州在线| 久久婷婷资源| 六月婷婷五月天| 九九99精品| 玖玖综合色| www.色综合| 日本一级一级一级一级| 国产人妻人伦精品一区二区| 五月婷六月天| 五月丁香综合影院| 五月丁香激情综合| 五月丁香在线综合| 亚洲成人网无码| 专区无日本视频高清8| 色五月婷婷激情五月| 婷婷碰碰| 91 九色 熟女| 狠狠撸激情综合丁香五月天俺来啦| 99riav 亚洲| 五月婷婷六月丁香色| 大香蕉伊在| 激情六月婷婷| 日韩AV色色色| 久久久精品视频79| 婷婷丁香五月在线观看91| 久久天天| 五月丁香六月婷婷免费| 五月天伊人久久久久| 91黄址| 思思热久在线观看视频| 亚洲久艹| 国产精品美女久久久久AV超清| 丁香五月六月欧美| 丁香五月欧美成人| 超碰色碰碰| 九九色综合网| 国色天香伊人狠狠色| 黄色91在线观看| 99综合久久| 狠狠999| 久久99日本精品视频免费观看| 日韩色久| 久久成人亚洲欧美电影| 婷婷99狠狠躁天天躁| 五月丁香六月情亚洲| 91无码高清| 丁香五月天堂网| 日本色五月| 最新热中文字幕| 色九月综合网| 婷婷97C| 久热91| 六月丁香婷婷尤物| 丁香激情五月综合网| 岛国午夜视频| 熟女强人妻一区二区三区四区无| 久操热| 五月婷婷色五月| 五月丁香六月日逼| 99热啪啪| 97干免费视频| 在线你懂的亚洲欧| www.99精品视频| 丁香六月在线| 久久作爱| 九九九九国产| 婷婷丁香五月综合| 996er热| 丁香五月婷婷色偷偷| 色欲婷婷夜夜| 六月丁香婷婷综合色播| 怡红院 久久| 激情婷婷九月| 五月婷婷草| 亚洲欧美综合7777色亭亭| 亚洲超碰在线| 久99久视频| 99无码黄色视频| 99成人| 视频综合网| 日韩有码久久| 日本A片一区| 伊人无码高清| 河北真实伦对白精彩脏话 | 亚洲人妻电影| 色五月欧美| 69色色视频| 伊人国产婷婷五月天| 玖玖视频福利| 麻豆科斗777| 99操逼| 丁香九色不卡aaa| 亚洲深喉AV| 久热久| 婷婷之玖玖| 免费看片在线观看| 九九人人自拍| 日韩啪啪视频| 九九色婷婷| 色婷婷综合视频| www.91九色| 国产婷婷综合| 欧美色婷婷| 热99国产精品| 五月丁香 啪啪啪| 五月四色婷婷| 99∨VTV| 色色色图| 久9无码视频| 丁香婷婷色情| 天天爽夜夜操| 亚洲精级| 99视频内射三四| 亚洲热手机在线观看| 人人爽在线视频综合网| 丁香婷婷色五月天| 丁香五月天的网址。| 26UUU欧美| 五月天婷婷综合免费| 可以免费观看的AV| 99久热| 婷婷五月,综合伊人| 六月婷综合| 91色色色视频| 97人人草| 开心五月天激情网站| 六月激情久久| 九九这里只有精品| 六月婷婷操逼| 五月六月丁香激情视频| 成人五月天视频播放| 婷婷五月天成人| 婷婷色中文字幕| 国产精产国品一二三在观看| 《久久综合九色综合97婷婷| 亚洲性爱干干| 亚洲无码11| AV九九| ww超碰在线| 超碰在线人人| jiqingliuyuetian| 91超碰人人操| 九热久| 五月六月丁香婷婷在线观看| 九九精品免费| 国产91资源在线| 激婷网| 97在线/亚洲| www.久久| 开心婷婷五月| 国产av第一专区| 日本va欧美va欧美va精品| www.亚洲激情| 久久婷婷五月天| 五月天婷婷久草丁香| 日日爱678| 99re鈥哸鈥唙| 九九99精品视品| 丁香五月婷婷基地| 婷婷亚洲综合| 丁香五月色色婷| 丁香午月AV中文字幕| 五月天婷婷乱论小说| 精品一二三区久久AAA片| 超碰97色| 丁香五月六月婷婷殴美综合| 成人超碰网| 色婷婷WWW| 性综合网| 激情丁香五月AV| 五月天婷婷色播在线网| 丁香五月激情综合| 精a品a视a频| 久久激情天堂| 99视频网址| 精品无码99| 99∨VTV| 中文精品在| 色色性爱视频| 97色操| 夜夜躁爽日| 天天插操| 欧美婷婷五月无砖| 天天日天天操心| 色五月丁香五月| 色婷婷五月天在线观看| 97在线/日本| 色五狠狠| 婷婷丁香先锋资源网站| 五月天四色房丁香亭亭| 狠狠色丁香久久婷婷综合五月| 女力报到正好爱上你| 婷婷成人基地| 久久婷婷一级片| 91精品国产综合久久久不卡电影| 九九综合久久| 深爱五月月天| 五月丁香久久| 丁香五月天婷婷中文| 强辱丰满人妻HD中文字幕| 亚洲色色色色色| 亚洲激情另类| 婷婷色无码| 久久激情五月| 婷婷深爱五月丁香网| 欧美日本韩国亚洲| 婷婷五月天黄色小说| 涩涩激情五月婷婷| 综合一区二区三区| 这里只有精品视频222| www.色婷婷| www.yw色| 五月丁香综合啪啪| 色综合日日| 日本性视频| 婷婷五月激情视频| av国产精品偷| 久久xx| 六月婷婷色五月| 日本色色影片| 丁香五月天堂网| 五月天丁香综合| 99热伊人| 色综合色综合网| 99re热在线视频观看| 国产偷人妻精品一区| 亚洲操B视频| 成人永久免费视频在线观看| 久久婷婷成人视频| 碰人人97| 99热久| 天天开心AV色综合婷婷五月天| 热久久999| 日本熟女二区| 99热九九这里只有精品10| 国产性av| 色色色色色网站| 成年视频免费观看| 精品一二三区久久AAA片| 五月天婷婷成人资源站| 香蕉综合在线| 五月天婷婷开心| 日韩有码久久| 精品影院| 激情婷婷啪啪| 久久色五月| 亚洲视频另类| 热九九精品| 丁香婷婷色情社区成人小说| 日本一级一级一级一级| Y11111111111少妇电影院| 996热re视频精品视频| 婷婷五月欧美综合| 99热偷拍| 99热热热国产超碰| 97人碰人操| 久婷| 欧美日本另类| 小视频一区| 色五月色五天色情网| 日碰日| 五月天婷婷激情小说电影| 日本激情五月天‘| 五月丁香婷婷久久| 人妻久久做| 97超级碰碰碰| 91熟妇大香蕉| 成人婷婷色综合| 狠狠干狠狠色| 欧美精品啪啪| 色婷婷五月天在线观看| 岛国AV网| 性生活久久人妻| 五月丁香婷婷无码中文| 视频久久9| 亚洲五月六月婷婷| 大陆极品少妇内射AAAAAA| 六月丁香婷婷综合狠狠爱夜夜爱| 人人爱人人摸人人澡| 五月丁香婷婷综合在线| 丁香婷婷网| 碰碰操91| Www.狠狠| 亚洲Av成人在线观看| 激情五月婷婷综合秋霞| 精品久久穴| 婷婷天堂站| 五月丁香婷婷在线| 激情五月天综合网| 亚洲色婷婷久久99精品91| 一本道在线电影| 日日夜夜天天综合| 激情五月婷婷五月| 无码色| 国产一级片| 婷婷综合色图| 成片免费观看视频大全| 激情五月综合网| 五月综合激情| 男女99免费视频| 99热这里都是精品| 色婷婷操逼| 开心婷婷五月中文字幕组| 中文aV网| 久久久久久久久久人妻| 99精色| 婷婷六月五月天综合| 婷婷色五月情| 日本操B视频| 直接看的AV| 婷婷狠狠干| 亚洲色欲AAAAAA| 偷拍视频五月天| 人妻精品久久久久久久| 久久99网| 色综合色五月| 成人片在线播放| 五月婷六月| 丁香五月偷拍| 日韩无码AV电影网站| 色综啪啪网| 亚洲中文字幕翔田千里| 丁香婷婷六月| 99日精品视频| 玖玖伦理电影| 国产精品热搜丁香五月婷婷| 97色操| 色五月综合在线| 欧美成人精品A片免费一区99| 99re热| 黄色99网| 这里只有精品视频在线| 九九热最新| 久久人妻熟女一区二区 | 免费AV播放| 黄色三级毛片中字| 九月久久婷婷| 99在线免费视| 丁香五月婷婷五月| 九久9精品| 久草免费福利视频| 色婷婷丁香| 色天天久婷婷| 免费看欧美成人A片无码| 97热视频| 激情婷婷激情在线不卡| 亚洲成人综合在线| 激情六月婷| 九九色影院| 开心婷婷五月| 激情五月婷婷综合秋霞| 久久久ww| 丁香六月亚洲综合| 五月丁香六月综合激情| 99热99| 新久久五月天激情| 婷婷色综合| 色综合天天| 丁香五月婷婷大香蕉| 天天搽天天射| 91丨九色丨熟女|新版| 激情五月天网站| 丁香六月综合激| 丁香六月色婷婷欧美| 五月激情婷婷丁香| 曰韩少妇内射免费播放| 天天综合网91| 五月天综合激情网| 在线视频婷婷| 五月丁香久久网| 五月天久久婷婷| 99欧美| 97久人人| 草综合14| 婷婷色色网| 97人妻碰碰中文无码久热丝袜| 97碰精品| 婷婷丁香五月天在线视频| 久久99热这里只频精品6学生| 搡BBBB搡BBB搡18 | 九九综合| 色五月av| 操逼综合网| 同性gv国产精品一区二区| 99在线免费视频| 亚洲视频在线观看区| 色七色九九| 丁香五月天中文字幕| 五月婷婷成人| 五月婷婷黄色| 激情丁香五月天| www.99热在线观看| 性天天中文网| 五月婷婷啪啪| 99久热在线精品| 91色五月| 久热九九| 天天插天天插天天插天天插| 日本69日人视频| 色色综合网络| 色停停影院五月天| 综合网天天| 一区中文字幕电影| 丁香五月激情婷婷婷婷在线观看| 色五月色情| 丁香五月婷综合网| 在线观看欧美3区| 日本成人噜噜| 另类图片五月激情| 国产精品色婷婷久久久精品| 日本啪啪天堂| 免费做A爰片77777| 久久欧洲综合网| 丁香五月婷婷久久久| 丁香五月婷婷基地| 婷婷五月天成人在线视频| 国产无套精品一区二区| www.激情五月天.com| 国内外色色色色色成人视频| 日本精品。999| 成人免费120分钟啪啪| 性爱电影科技贸易有限公司| 大香蕉啪啪网| 欧美丁香五月天| 拍色综合| 五月丁香花激情综合网| 国产亚洲色婷婷久久99精品9j| www.五月.com| 7777激情基地| 中日韩美欧成人一区二区精品在线| 深爱五月天 开心网| 疯狂做受XXXX高潮A片| 99er在线观看| WWW久| 五月天久久婷婷| 久久久宗合| 激情第四色| 丁香五月天av| 丁香婷婷超碰 | 国产成人+综合亚洲+天堂| 久久成人性爱| 日日躁夜夜躁狠狠久久AV| 五月丁香六月香综合激情| 亚洲亚洲人成综合网络| 色色色色综合| 丁香婷婷五月天网站| 超极99精品| 色婷婷天堂| 99re热| 国产综合A片| 九热视频| 亚洲色情在线| 成人综合AV| 国产又爽又猛又粗的视频A片| 日本色色色| 97人妻碰碰中文无码久热丝袜| 少妇真实被内射视频三四区| 五月亭亭网成人在线视频| 影音先锋一区二区三区| 青青草大香| 大香蕉九操| 色五月婷婷久久大| 在线另类| 久热re在线视频| 欧美在线干| av人人干| 精品九九视频| 丁香五月综合高清在线| 香蕉网久久| 黄色激情网站在线观看| 极品少妇XXXX精品少妇偷拍| 丁香五月另类色婷婷麻豆| www.五月瑟| 五月视频日本免费观看| 婷婷五月色| 大香蕉婷婷丁香| 五月丁香亚州综合网| 婷婷五月天AV| 丁香六月啪啪| 中文字幕成人| 五月婷综合| 久久久性爱视频| 性色五月天| 色综合久久88色综合天天| 激情五月天在线| 久热9| 大香蕉啪啪| 色婷婷先锋| 91天堂网综合| 激情丁香五月AV| 99re在线免费视频| 久草视频大香蕉99| 久久久噜噜噜www成人| 97人碰人操| 成人丁香婷婷| 久久久久久久91| 日本eVa一区=区视频| 三级av在线| 国产肥白大熟妇BBBB视频| 六月丁香啪啪| 少妇人妻丰满做爰XXX| 大战熟女丰满人妻AV| 天天天天操| 五月丁香婷婷色| 九九在线精品| 9久热精品在线视频| 精品无码久久久久久久久| 人妻丰满精品一区二区A片| 亚洲亚洲人成综合网络| 成人αV视频免费观看| 日韩一本操| 超碰2021| 大香蕉九九热| 99久久9| 五月天激情偷拍| 婷婷五月永远18免费久久久| 激情久久天天| 色综合色综合色综合色综合| 欧美日韩成人在线观看| 天天插天天爽| 婷婷伊人五月天| 色综合中文综合网| 久久色五月| 五月丁香综合啪啪| 99精品视频网| 天天插天天日| 黑人巨粗进入警花疼哭A片| 免费无码毛片一区二区A片| 久久人妻超碰一区| 天天色综| 亚洲sesesese| 我要看激情五月天| 九九色播五月丁香| 99国产精品白浆在线观看免费| 色色色香蕉五月婷| 9 99免费视频| 成人五月天在线视频在线观看| 久久机热这里只有精品| www,色婷婷| 亚洲精品V天堂中文字幕| 99精日本久久| 伊人激情啪啪| 五月综合六月婷婷| 午夜一区| 男女啪啪视频久 9| 伊九九三级区| 五月婷婷丁香综合| 亚洲成人五月天| 婷五月天影院| 性爱网久久| 国产AV成人精品| 久草a片| 婷婷五月天.com| 久久六月天| 97天堂| 色五月偷偷| 亚洲女婷婷五月基地综合久久久| 五月天婷婷操逼视频| 青草视频在线观看视频| 国产精品视频免费看| 九九热这里只有精品12| 99热日本| 久久久婷婷色五月资源网| 五月丁香在线视频观看| 第四色大香蕉| 97超级碰碰碰久久久| 婷香五月网在线| 99爱视频在线观看| 清纯唯美 激情四射| 婷婷丁香六月| 久久色9| 天天综合区| 97色五月天| 超碰人人色| 九九99在线视频| 天天天天做夜夜夜夜做| 丁香五月婷婷五月| 婷婷五月激情综合| 在线成人网址| 性爱人人网| 99色免费视频| 丁香色婷婷色手机免费在线| 久久激情综合| 五月丁香大香蕉| 国产韩日亚洲美州欧亚综合在线| 色天堂在线| 五月丁香六月婷婷综合| 午夜色丁香| 久久您您综合网| 深爱五月中文字幕| 久草热久草在线视频| 激情五月综合| 丁香五月激情综合| 久久精品99| av在线免费播放| 婷婷九月狠狠色| www.99热| www.sebowuyue| 五月丁香激情综合| 97丁香五月| 婷婷五月天美女21p| 超碰A V在线| 99热在线这里| OUMEIRIHANCHENGREN| 天天天天天日| 欧美日韩成人在线免费| 九九热精品视频在线观看| 六月丁香天堂| 色综合大香蕉| 狠狠丁香| 五月婷婷六月激情| 婷婷色五月综合丁香| 婷婷综合五月| 伊人成人宗合网| 亚洲成人在线观看av| 五月欧美色色五月| 深爱五月最新网址| 久久婷婷网址| 五月婷激情| 日本高清久| 深爱激情六月天| WWW五月婷婷| 国产看真人毛片爱做A片 | 欧美日韩大黄| 人妻激情久久| 天天日天天草| 色婷丁香| 国产精品成人AV在线观看春天 | 久久久97| 天天插天天| a片在线免费观看一区| 国产性爱一级| 在线观看五月婷婷网| 中文字幕日产A片在线看| 欧美久久婷婷| 99熟女啪啪视频| 开心激情综合| www.五月丁香av| 一操久久| 久久99精品视频| 夜夜做夜夜愛| 69久久99精品久久久久婷婷| 综合激情站| 日逼免费视频 | 激情六月婷婷| 亚洲精品一区无码A片| 五月婷婷丁香综合网| 超碰99资源站| 日本天天操| 五月婷婷六月丁香在线| 婷婷五月天国产精品| 五月天婷a在线| 日本色爽| 青青草蜜臀| 九九精品热播| 天天综合精品| 天天综合精品| 日日婷婷不卡| 婷婷五月综激情| 丁香网五月天| 91性高潮久久久久久久久| 6080av| 激情文学第四色婷婷丁香五月| 九九久久综合| 五月丁香啪| 婷婷五月天亚洲色| 9操在线| 婷婷五月激情四射手| www狠狠| 巴基斯坦粉嫩无码视频| 久久久这里都是精品| 9色在线视频精品观看| 久久婷婷视频| 天天做天天爽| 九九久久视频| 99色区| 亚洲熟女乱色综合亚洲网站| 日本V在线观看不卡视频网站| 9l视频自拍九色9l视频自拍九色9l社区 | 日本色噜| 成人电影AV在线观看| 操91综合网| 亚洲午夜av| 久久伦乱| 五月天婷婷综合免费| 丁香五月日本| ay2区| yellow视频在线观看91| www.九月婷婷丁香.com| 亚洲深喉AV| 日本狠狠干| 色婷婷五月在线| 五月丁香免费看| 精品怡红九九九| 99视频久久免费视频| 成人 在线 日韩| 视频久久9| 九九精品碰| 中文字幕不卡网站| 亚洲精品V天堂中文字幕| 天天爽天天爽| 99九九精品| 色婷婷婷婷| 天天肏高清在线| 97色色色| 五月天伊人| 五月丁香六月激情视频| se99视频| 激情六月日韩| 中文字幕乱轮| 这里精品| 开心激情网五月天| 亚洲视频99| 婷婷五月天久久| 亚洲热视频| 久久久久久人妻| 99热免费观看| 婷婷色在线播放| 婷婷五月天AV在线| 国产 亚洲 在线| 婷婷伊人綜合中文字幕| 91 九色 熟女| 第四色五月天| 夜夜穞天天穞狠狠穞AV美女按摩| 九九激情网| 亚洲精品又粗又大又爽A片| 国产精品色色| 欧美顶级少妇做爰HD| 日本欧美成人片AAAA| 97在线观看| 婷婷综合仓库中文| 香蕉五月婷婷| 婷婷婷久久久| www.色综合| 婷婷五月色花丁香社区| 色婷婷深爱五月| 婷婷激情丁香六月| 色婷婷五月在线| 色婷婷a v| 99色网站| 婷婷视频在线| 99玖玖人人| 五月丁香激情四射综合| wWw色五月| 久久久久久综合五月婷婷| 自拍盗摄 另类| 色欲五月婷婷| 性爱综合网| 日韩成人精品一区久久久久| 婷婷五月天香蕉| 99久超碰| 久久精品99国产精品日本| 任你爽在线视频| 婷婷综合亚洲| 婷婷舔| www.婷婷.com| VA色婷婷| 午夜天天精品视频| 91chinese 在线| 亚洲热手机在线观看| 丁香五月23111| 五月丁香综合| 能看的AV| www.久9| 天天五月香欧美| 色婷婷久综合久久一本国产AV| 91人人网| 色综合视频在线| 色99在线观看| 五月婷婷,六月激情| 六月丁丁香| 九九热精品| 综合色色综合| A√天堂网在线| 五月天激情图片| 另类图片五月天| 丁香五月天天| 婷婷丁香一月| Av九九| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 天天天天天天操| 九月丁香婷婷| 亚洲秘 无码一区二区三区妃光/1| 狠狠色婷婷7| 色色亚洲五月天| 五月丁香在线| 欧日韩成人| 思思久久99热只有频精品66| 丁香午夜天| www.刺激色网站www.| 啪啪婷婷五月天激情| 色婷婷五月天成人网| 九九九九精品精| 五月天啪啪| 天天爱天天秀天天做| 9精品久久999| 丁香九月激情| 26uuu欧美| 99欧美精品99日本精品| 99惹在线精品免费观看| 99热这里| 色碰97| 涩五月丁香| 九九在线视频| 五月丁香六月成人| 激情综合网五月天| 日本色99网站| 中国AV性爱观看| 日韩另类| 久久97| 91久久综合亚洲鲁鲁五月天| AV免费在线网站| 色婷婷九月| 超碰成人黄色网| 五月色亭丁香| 国产这里只有精品| 日韩九区| 台湾无码A片一区二区| www.91AV.COM| 激情五月天色婷婷| www.色多多婷| 色婷五月丁香久亚洲| 嫩草AV久久伊人妇女超级A | 国产avapp 网| 99色视频| 色欲婷婷五月天丁香| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 九九九九国产| 丁香五月婷婷AV| 91狠狠色色丁香婷婷综合久久| 亚洲蜜乳AV| 激情深爱五月| 色色色天堂网| 26uuu精品一区二区| 极品五月天| 九九婷婷网五月天| 99碰碰中文| 六月婷婷激情| 超碰97免费在线| 玖玖99免费视频| 97性视频| 99热91| 99re热精品视频国| 五月天综合| 狠狠色丁香99| 五月天丁香婷婷视频网址| 激情 婷婷 插| 97碰碰免费.视频| 人人爱人人添| 日本97久久久精品| 久久多色| 色五月激情视频在线综合| 丁香五月欧美| 亚洲激情丁香五月基地| 一本色道久久综合狠狠躁一二三| 天堂草在线观看| 亚洲无码免费看| 天天日天天插| 开心五月激情网| 中文字幕按摩做爰| 国产在线另类五月婷婷| 婷婷伊人綜合中文| 婷婷九月在线| 99这里有精品久久97| 久久99久久99久久99人受| 婷婷成人丁香色情基地30 | 五月丁香六月婷| 久久这里精彩免费在线观看| www五月| va亚洲中文在线| 任你擦免费视频| 色欲天天综合网| 五月婷婷丁香在线视频| 激情 婷婷| WWW.婷婷| 亚洲经典小视频| 综合99综合久久久久久久| 99精品网| 亚洲第一第二网站| 五月婷婷xxx| 五月天丁香久久综合| 91精品久久久久久久久| WWW夜夜| 亚洲免费成人电影AV| 色婷婷久久综合| 美女100%露全身无挡网站| 色亭亭九月| www色色色com| 婷婷十月丁香| 91日本在线观看| 在线综合亚洲欧美65| 亚洲情色一区| 天天天天天天天操| 九月丁香婷婷综合| 伊人狠狠干| 综激情网| 久久综合五月情| 婷婷伊人| 丁香五月天AV| 久久久久婷婷五月热综合| 五月婷婷黄色毛片| 另类图片五月天| 操逼视频一区| 97五月天婷婷| 伊人大香五月天| 99伊人性爱在线影院| 无人区码一码二码三码医生系列| 丁香激情五月| 亚洲色A| 欧美成人无码高清一区二区三区| 2013AV天堂| 久久久久久久久久久久久9| 超碰免费成人| 噜噜精品| 五月开心啪啪| 99er精品| 青青草原亚洲天堂| 精品导航在线x不卡| 欧美私人家庭影院| 97人人干| 久99热在线观看| 婷婷瑟瑟五月天| 97深爱伊人综合| 思思久久网| 97干视频在线| 久久精品日| 一二线视频 另类| 人妻久久久| 99欧州偷拍视频| 亚洲激情另类| 久久er99| 成人电影丁香六月天| 天干干夜夜操| 婷婷五月成人有| 久久久WWW| 丝袜激情网| 国产4P视频精品五区| 五月天久久小说| av中文网| 国产XXXX搡XXXXX搡麻豆| 狠狠干五月天| 激情五月丁香五月| 51XX午夜影福利| 色婷婷丁香五月| 精品人妻一区| 久久久久人妻精品| 久久少妇视频| 色色色色色色色色色色色色色色,网站| 婷婷亚洲五月丁香综合在线| 97色色色色| 久久九九视频网站| 久久综合激情五月天| 狠狠色丁香五月婷巨| 激情五月天视频| 玖玖婷婷五月天| 丁香五月影院| www.久久| 五月婷婷开心亚洲无| 色5在线| 六月激情婷婷色| 婷婷舔| 色色丁香五月婷婷| 韩国婷婷丁香五月| 先锋av性爱成人电影| 色天天综合成人网| 丁香五月六月婷婷殴美综合| 九九精品视频在线观看| 日本色色色| 九九热精品| 99色热视频| 99re这里| 中国女人做爰A片| 91男人操女人视频| 色激情网| 久久思思99| 丁香九月婷婷综合| 狠狠香婷婷五月| 激情影院免费视频婷婷五月天| Va另类视频| 思思热AV| 亚洲精品影视| 99久久网站| 强辱丰满人妻HD中文字幕 | 美女网黄| 色婷婷综合久色AV五色最新| 六月色色综合| 美国色五月天婷婷资源站| 婷婷综合五月天| 这里只有精品1| 搡BBBB搡BBB搡18 | 91久久九九| WWW久久久| 五月丁香成人| 综合色五月| 日本综合色色| 风流少妇A片一区二区蜜桃 | 五月丁香综合激情| 五月丁香六月激情综合啪啪| 久久色五月天综合网| 久久激情五月婷婷| 日韩精品AV一区二区三区| 31色区视频免费看| 五月天婷婷综合网| 天天日天天爽| 九月停停| 亚洲另类婷婷综合| 99精彩视频在线观看| 激情综合五月天| 97人人操人人干| 91九九精品| 永久无码色| 日本久久爱| 99这里都是精品6| 成人久碰| a在线观看| 秋霞三及片| 亚洲激情AV| 色八戒操婷婷| 99热在线爱| 夜夜夜夜夜骑撸| 午夜天堂啪啪| 五月婷婷综合性爱噜噜| 少妇丁香婷婷 | 激情五月综合网最新| 俺去也五月天婷婷| 婷婷五月综合丁香久久| 91精品综合久久久久久五月丁香| 丁香六月视频免费观看| 丁香六月在线| 婷婷五月六月丁香| 婷婷区日本| 五月婷婷av| 亚洲AV成人精品网站在线播放| 色婷婷色99国产综合精品| 99青青草| 久久久久久久人妻| 久久精品63| 欧美日韩AAAA| 99免费在线| 五月色综合网欧美网| 开心五月激情婷婷| 99色热| 激情五月天的婷婷| 亚洲婷婷乱乱丁香| 婷婷五月婷婷| 久久人人九| 99r这里只有精品在线观看| 中文字幕在线日亚州9| 色碰干| 青草五月天| 操日本99| 青草久久五月婷伊人| 久久HD| 4399在线观看免费高清黄色视频| 亚洲综合在线丁香五月| 99精品视频网| 中文AV在线播放| 六月综合婷婷开心伊人| 欧美性爱丁香五月| 天天操天天操综合| 色欧洲| 99热超碰在线| 亚洲综合视频网| 99精品偷拍视频| 伊人五月丁香| 97色 五月天丁香| 精品人妻久久久| 五月丁香网站| 五月综合视频在线| 天天综合在线网| 婷婷丁香97| 女同激情久久av久久| 五月天狠狠色| 久久机热/这里只有精品| 91怕怕网| 五月色天情| 国产性爱大片久久| 精品51XX| 免费色婷婷| 婷婷五月天激情网站| 天堂va久久久噜噜噜久久Va| 亚洲色vA| 欧美日韩国产一二区| 六月久久狠狠| 色婷婷精| 久久金品黃色| 91日精品| 亚洲婷婷基地| 影音先锋色婷婷| 4399亚洲视频| 丁香婷婷色五月| 在线不卡视频| 丁香婷婷六月激情| 丁香五月天AV在线 | 狠狠操综合|