免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
婷婷婷婷婷开心无码播放| www.99日本| enecarbon-materials.com污K127封锁请涟系@wip1688 | 色都都狠狠色都都色综合色| 51精品国自产在线| www.夜夜| 91久久综合亚洲鲁鲁五月天| 五月天堂在线| 丁香婷婷五月天色综合| 亚洲婷婷久久综合| 婷婷五月天首页激情| 大香蕉五月天| 欧美激情综合色综合啪啪五月| 婷婷香香五月| 超碰人妻在线| AA久久| 五月丁香啪| 五月丁香婷婷网在线在线| 99er国产| 激情综合五月激情17| 色色五月激情| 色综合色综合色综合| 天天弄天天操| 亚洲亚洲人成综合网络| 色五月激情五月| 色色色热热热| 91国产精品视频播放| 五月激情婷婷综合| 五月丁香激情四射| 婷婷五月天奸女| 激情六月五月婷婷综合网| 热久久91| 五月天色图| 欧美25p| 亚洲综合视频一下| 六月婷婷激情小说网| 日本99热| 成人婷婷色五月天| 日韩人妻无码一区二区| 五月婷婷|欧美| 久久久WWW| 国产精品五月天婷婷| 丁香五月天婷婷中文| 无码一区二区三区四区五区| 五月香蕉婷婷| 色综合天天天天做夜夜| 色色色图| 婷婷色九月| 激情六月天婷婷| 色五月天成人| 五月天大香焦| 九九热123| 国产亚洲精品久久久久久豆腐| 亚洲激情综合网| 六月婷婷狠狠| 亚洲 小说 欧美 激情 另类| 久久五月婷综合网| 六月丁香激情综合| 天天天操天天天日| 夜夜嗨一区二区三区直播内容| 青青草青青草五月天| 色五月AV| 日本女色人人| 婷色视频| 91精品久久久久、久五月天| 99久久久久久www| 色综合色| 亚洲色综合色网| 26uuu国产| 色婷五月丁香久亚洲| 99精品热视频| 激情四射五月天| 色情五月天丁香社区| 伊人婷婷色| 人人叉久| 99热国品免费| 丁香五月六月久久综合 | 丁香五月偷拍| 亚洲五月婷婷| 久热精彩视频98| 五月婷婷色| 成人日韩欧美| 97婷婷久久丁香| 丁香色成人| 久操b网| 亚洲综合字幕色色| 色丁香影院| 天天爱天天操| 日韩精品视频中文字幕| 亚洲小视频免费播放| 超碰av天堂| 成人免费黄色短视频| 婷婷丁香五月天哟啪| 激情综合网五月在线播放| 九九成人| 色五月综合| 国产日比| 色五月丁香五月| 亚洲色图五月丁香| 另类图片激情五月天| 色久婷婷网| 天天日天天干天天插天天射| 91九色精品熟女内射| 亚洲无码成人| 99a级片| 青青草成人网| 99久精品视频| 五五月丁香花激情综合网| 99国产小视频| 色色99| 色玖玖玖| 午夜九九电影| 色五月激情婷婷| 婷婷丁香在线播放| 91九九| 色99视| 久在线88综合| 视频综合网| 殴美97色| 色丁香在线视频| 久久婷婷网址| 99精品久久| 噜综合| 99久久五月婷婷| 色九月| 色综合视频| 视频这里只有精品16| 久久亚洲A| 思思热99er在线视频| 噜噜久| 狠狠色色| 99热99极品观看| 色大综合| 色五月丁香A欧美com| 99婷婷| 五月丁香激情综合啪啪| 五月天开心成人网| 九 九九九AV| 婷婷五月天在线观看第二页| 成人无码髙潮喷水A片| 天天久综合网永久入口17v| 五月丁香亚洲婷婷| 丁香五月婷婷图片综合| WWW.桔色成人.COM| 婷婷五月欧美综合| 99爱视频免费看| 五月婷婷深深爱| 五月做爱| 五月丁香色六月激情干大屄| 超碰国产AV| 亚洲久久视频| 男男野外做爰全过程69| 激情五月亚洲综合网| 色爱亚洲| 色爱综合网| 69人人操人人爽| 大香蕉婷婷婷| 五月婷婷狠狠干| 麻豆WWWCOM内射软件| 六月丁香大香蕉| 日本成人噜噜噜| 久久92| 婷婷成人小说综合| 五月天成人伊人| 婷婷五月伦理| 99re思思| 丁香婷婷久久老熟女综合网| 亚洲99热| 武则天精品久久| 亚洲婷婷丁香| 91丨九色丨大屁股| 成 人 色 色| ..真实国产乱子伦毛片| 狠狠色成人影片| 久久一级片| 成人免费在线电影| 亚洲综合丁香婷婷六月天| 天天综合精品| 五月天网站亭亭| 丁香五月天.com| 日韩久久色| 日本片日本片祼观看网站在线看中文版网页在线看 | 日本三级日本三级三级人妇四虎| 色999;丁香五月| 思思热思在线精品视频| 91久久国产综合久久| 亚洲综合草草| 婷婷五月天色综合| 大香蕉久久伊人婷婷五月丁香| 五月丁香激情啪啪| www色五月| 久久综合中文| 玖玖婷婷五月天毛片| 这里只有精品视频| 日韩1区2区| 丁香激情网| 亚洲va综合va国产va中文| 国产乱妇乱子伦| 超碰色女| 亚洲精品国产A久久久久久| 成人综合伍月天| www,色婷婷| 少妇高潮呻吟A片免费看软件| 99精品22| 婷婷5月天av| 五月天堂六月丁香亚州中文字幕久久| 丁香五月人妻| 丁香激情五月天| 丁香六月开心| 九洲一级A片| 欧美大片免费播放器| 色婷婷六月丁香综合欲精品| 五月天婷婷在线观看精品男人| 337久久| 国产97色在线| 天天干夜晚夜操| 99这里只有精品国产| 亚洲精品另类| 青草五月天| 综合婷婷五月天| 久久这有这里精品| 黄色片久久| 久久9视频| 伊人色五月| 操逼巨乳91| 天天射综合网夜夜操| www.色擼擼.com| 婷婷综合干| 美女黄频aⅴ视频| 五月亭亭狠狠| 欧美婷婷五月| 99热这里只有精品50| 99久久婷婷国产综合精品草原| 人人舔人人色人人高潮| 天天操综合网| 五月丁香婷草| 激情五月天开心网丁香无码| 生活片五区| 婷婷五月丁香六月| 婷婷99狠狠躁天天躁| 午夜做爱影院| 热久国产| 亚洲深喉aV| 色婷婷先锋| 亚洲综合网 665566| 79色色免费| 99re思思热在线视频| av线电影| 婷五月天丁香婷五月| 99原创自拍视频在线观看| 少妇高潮一区二区三区99欧美| 九九精品在线网| 日韩人妻无码一区二区| 六月丁香深深爱| 人人亚洲| 婷婷五月天激情在线观看 | 五月天另类小说| 1024亚洲| 色玖玖玖| 91精品久久久久久综合五月天| 9超碰在线| 色色影院黄大片| 99色综合| 婷婷影院欧美| 26uuu欧美| 成人在线视频男人的天堂4399| 激情爱爱网站| jizzdr| 欧美婷婷五月天| 色99色| 激情综合色| eeuss人妻| 亚洲av骚货| 99噜噜| 亚洲成人超碰| 亭亭五月天成人| 五月丁香基地| 99热这里都是精品| 超碰精品在线| www久久久| 大香蕉人妻| 国产精品VIDEOSSEX久久发布| 天天做天天爱天天爽| 午夜成人网站在线观看| 99热丁香| 伍月婷丁香婷| 玖玖资源天天无码| 999激情视频| 久久女人天堂| 国产精品久久久久久久久久免费| 97人碰人操| 欧美日韩色色| 日韩人妻无码专区| 五月精品免费XXX| 婷婷五月天基地| 色婷婷播放| 亚洲欧洲国产精品| 天天噪夜夜爽| 国产欧美婷婷| 国产精产国品一二三在观看| 97精品人人A片免费看| 五月香婷婷| 中文中文在线| 人人看人人97| 开心五月激情| 五月天成人综合| 99久久激情视频| 九九人人操| 久久久91| 婷婷99狠狠| 人人爱国产| 91色色五月天| 成人无码精品1区2区3区免费看| 九九综合网| 婷婷五月天综合网| 色丁香五月| 激情小说视频图片| 激情五月婷婷综合| 婷婷综合婷婷| 日日夜夜久| 深爱激情四射| 天天做天天爱天天高潮| 伊人久久艹| 99精品偷自拍| 久热黄色| 婷婷久久99| 亚洲婷婷五月天| 色色五月丁香婷婷综合| 五月www| 狠狠狠狠狠狠| 五月天婷婷青青草| 青青草a在线| 996er热| 色综合五月| 99久久九九视频| 2017狠狠干| 欧美五月丁香啪啪响视频| 狠狠干青青草| 亚洲视频一区| 99色色热热| 九九亚洲视频| 丁香五月之久操视频| 啊V视频在线观看| 亚洲一区二区无遮挡A片| 久久色天堂| 色婷婷狠狠| 久久99这里只有精品视频| 婷婷欧美综合| av在线免费网站| 五月激情综合深爱| 操人妻90p| 五月婷婷综合在线视频小说| 亚洲V国产V欧美V久久久久久| 人人操婷婷| 五月天婷婷免费| 色婷婷五月天小说网| 人人摸人人搞| 久久人人九九| 变态另类9| 久久激丁香| 激情小说五月天社区丁香| www夜夜| 日韩成人影片网站| 色婷婷五月天在线| 婷婷丁香91综合| 丁香 婷婷 激情 综合 五月| 九九热九九| 国产成人AV在线播放| 看久久性爱99视频| www.爱婷婷.com| 色五婷婷| 亚洲色图日韩网址| 五月婷婷人人人操| 一起草av| 色婷婷视频| 九九家庭影院| 97成人操| www.国产色| 99热第一页| 婷婷性福五月天| 久久日九九| 26uuu欧美| 精品亚洲国产成AV人片传媒| 亚洲中文字幕网| 久久色大香蕉| 精品爆操| 婷婷五月天成人娱乐| 99这里只有精品视频| 色色五月丁香婷婷| 免费看欧美成人A片无码| 日本熟女三区| 丁香五月伊人| 五月丁香无码| 婷婷在线五月天观看| 久久久国产精品黄毛片| 婷婷五月丁香六月综合网| 9热在线视频| 色吧五月婷婷| 99综合久久| 欧美日韩99| 天天色丁香| 色9999日韩国产| 天天综合天天玩夜夜玩天天玩夜夜玩| 五他月天啪啪啪| 97操视频| 色婷婷丁香AV综合| 亚洲99在线| 99热在线观看精品| 2025天天操| 激情五月天的婷婷| 婷婷五月天伊人| 开心五月婷婷在线视频免费观看| 丁香综合久久| 午夜69成人做爰视频| 日本熟女一区二区| 中文字幕在线免费| 九九九九九999999| 婷婷五月天激情网| 五月天激情无码| 五月丁香婷婷综合久久| 色婷青青| 久久综合丁香激情五月| 婷婷五月丁香六月天亚洲综合| 91在线日本| 五月天丁香婷| 婷婷五月丁香网| 激情综合网五月| 九九九九热99超碰| 久久这里有精品视频| 91狠狠综合久久久| 92久操视频| 99热婷婷| 原琪琪色影院| 大香蕉太香蕉视频97| 免费日韩99| 欧美大片免费播放器| 97干在线播放| 97色在线| 中文字幕在线日亚洲9| 国产人妻人伦精品一区二区| 丁香五月性| 成人丁香五月| 中文AV在线观看| 久草狼人| 丁香花色色网| 《久久综合九色综合97婷婷| 五月丁香在线婷婷蜜桃| 99视频精品| 天天添天天摸天天天天做| 拍色综合| 日比网免费国产| 97色干| 欧美日韩AAA| 欧美狠狠一在草| 亚洲天堂玖玖| 欧美A片在线视频免费观看| 日韩成人av在线| 亚洲综合五月天| 婷婷一本和五月丁香| 婷婷久久婷婷| 色九月婷婷| 色婷| 国产三级片91| 色五月婷婷激情五月| 丁香五月激情综合| 97碰在线视频| 丁香五月性爱| 2025天天日爽| 能直接看的av网站| 欧美三日本三级少妇三99| 激情婷婷网| ji'qing'luan'ren'lun| 99热九九在线| 日韩在线五月天婷婷| 99热这里有精品24| 色狠狠综合| 9这里只有精品| 五月丁香久久久| 五月激情视频| 综合色久| 精品一区二区三区木瓜| 五月丁香五月综合欧美| 色综合色综合色综合高潮| 日本97在线| 日韩五月婷婷| 色婷婷成人久久| 六月色 亚洲| 九九久久污| 色色丁香五月天社区| 日韩精品无码AV| 欧美一线视频| 丁香综合婷婷开心激情网| www色色com| www.粉嫩av.com| 五月香蕉综合| 开心四月婷婷在线色播播| 九九九这里只有精品| 久久这里都是精品免费| 亚洲综合丁香五月| 丁香六月情| www.狠狠艹| 色综合色色| 久久五月激情综合| 精品色色| 激情综合网激情五月俺也去| 人人叉久| 亚洲精品乱码久久久久久综合| 26uuu美女三级视频| 欧美综合丁香网| 狠色色狠网| 天天做天天爽| 六月丁香社区| 人妻射精AV| 99黄色在线视频精品熟女| 国产真实乱对白精彩| 99热综合| 九九热视频在线观看| 丁香色婷婷| 翔田千里无码| 色欲天天综合| 欧美色频| 亚洲色 视频| 欧美性二区| 碰99在线| 在线中文字幕视频| 婷婷五月天激情综合网| 香蕉操亚洲| 久久久五月天| 97在线/日本| 少妇被下春药玩弄A片| 五月婷婷狠狠干| 99久久久久| www,com,五月色色| 能直接看的av网站| 在线中文字幕免费视频| AV成人在线播放| 这里只有国产精品在线| 婷婷第六色| 影音先锋综合网| 五月丁六月香| 免费在线观看av网站| 岛国av网站| 99热99日天天干| 五月丁香久久精品在线观看 | 久久中国毛毛片爱久久| 婷婷精品在线| 久草五月婷婷| 性爱激情五月| 91啦丨九色丨刺激中文| 亚洲人人操| 欧美一级色| 呦呦视频无码播放| 99热在线观看免费精品| 婷婷碰碰| 天天久久66xxx| 色五月综合激情网| 九九婷婷五月天| 伊人久久大香| 狠狠色狠狠| 五月精品99综合| 丁香五月手机在线| 超级久久久| 亚洲欧美成人在线| 中文字幕,综合,91| 人人操av| 波多野结衣不卡AV| www.精品99| 亭亭五月丁香五月天激情| 99热这里只有精品55| 久久99jiu9| 日韩有码一区| 久久婷婷五月综合色播| 人人干av| 九九热最新| 99色色爰| www激情| 亚洲精品99| 99∨VTV| 亚洲成人AV在线观看| 国产精品五月丁香| 婷婷五月成人| 婷婷色5月天在线。| 激情婷婷丁香| 五月丁香啪啪拍| www.狠狠| 九九热视频免费的| 91丨九色丨老熟女激情| 六月丁香六月婷婷欧美| 婷婷成人在线| 婷婷丁香五月激情| 婷婷丁香六月五月天| 丁香五月婷婷基地| 另类国产综合| 亚洲秘 无码一区二区三区妃光/1| 热99只有精品| www.爱婷婷.com| 久久色9| 国产9色在线/日韩| 天天色视频| 婷婷丁香六月影视| 激情婷婷激情在线不卡| 五月天久久综合| 情色五月天网站| 性色五月天| 狠狠va| 婷婷成人av| 色五月天婷婷| 97日在线视频| 久久婷婷六月综合| www.99热. com这里只有精品| 九月婷婷在线观看| 久久色婷婷| 秋霞午夜理论| 日韩啪图| 婷婷五月天精品| 色婷婷综合五月| 久综合4| 综合AV在线| 天色综合网站| 秋霞日本免费毛片A片| 丁香色婷婷| 任你草| 99燥99日| 久久久久亚洲AV无码网影音先锋| 丁香五月色播中文在线播放| 狠干综合| 99操| 婷婷的色色五月天| www.思思99热| 狠狠色狠狠| 久久艹 五月天| 久大香蕉| 亚洲无码另类| 91精品久久久久| 极品少妇高潮啪啪AV无码| 天天操电影院色狼性av| 亚洲av网站| 色婷婷伊人激情在线观看| 婷婷伊人网| 婷婷激情丁香五月天综合| 久久综合五月情| 9热在线观看| 久热大香蕉| 女高怪谈在线观看| 久久视频婷婷视频| 婷婷精品| 成人无码髙潮喷水A片| 激情播丁香| 玖玖精品视频99| 亚洲精品在线视频| 任你爽在线视频| 思思re99视频在线观看| 亚洲五月天激情| 亚洲99在线| 九九九这里只有精品| 九九热婷婷| 婷婷五月激情基地| 国产成人精品一区二三区熟女在线| 婷婷五月天堂一本在线| 人人爽人人爽人人爽人人爽| 丁香五月天人体| 日本 欧美在线| 97伊人综合婷婷| 丁香六月成人| 久久婷婷七月丁香| 色欲一区二区三区精品A片| 亚洲精品亚洲人成人网| 综合激情五月婷婷| 99精品在线观看视频| 亚洲综合在线丁香五月| 国产精品噜噜在线视频| 99热免费网站| 亚洲激情久久| 激情都市五月天| 东京热人妻一区二区三区在线| 精品国产人人爱人人| 99精彩视频| 色婷操逼| 欧美色色色色色色色| 71在线精品视频一区| 91色色色视频| 99热亚州综合| 中文字幕无线久必| 五月Huangsewang| 99久久九九视频| 色色五月婷| 韩国真做片在线观看| 九九99香蕉在线视频播放| 五月婷婷co.m| 欧美综合五月丁香五月天| 五月丁香六月婷婷综合伊人| 亚洲精品视频电影| 99热精品观看| 99操99| 操操精品| 怡红院 久久| 丁香五月成人| 热热久久精品视频| 牛牛碰免费| 色女伊人| 这里有精品2| 国产在这里只有精品| 日日夜夜天天| 最新av在线观看| 久久人妻视频| 丁香 亚洲 久久| 99操| 亚洲成人五月天| 射久久丁香五月| 婷婷丁香五月,狠狠综合| 狠狠色综合网| 伦乱人妻| 极品五月天| 天天操夜夜啊| 婷婷久久网| 思思久久青草热| 亚洲亚洲人成综合网络| 五丁香激情综合| site:ornaments52.com| 五月婷婷我| 精品色色| 亚洲天堂热| 中文字幕视频色婷婷| 金品在线视频99| 亭亭五月丁香综合欧美| yazhochengrenavwang| 五月激情五月丁香| 亚洲操操| 我要色综合五月婷婷| 色综合色| 日本天堂爱爱| 色色色99| 五月天开心色情网| 超pen个人视频97| 五月激情六月婷婷| 婷婷五月天亚洲| 六月婷婷色综合| 久久久久久婷| 91狠狠综合网| 99热主页日本| 五月婷婷丁香六月| 色五月激情网| 欧美色色色色色色| 丁香五月综合在线| 婷婷大乡焦噜噜| Blackedraw视频一区二区| 九九热99视频在线| site:publishdd.com| 婷婷综合网站| 91seAV| 依人大香蕉| 天天干 夜夜爽| 激情丁香五月| 亚洲操人| 五月丁香婷中文字幕| 六月丁香久久| 偷偷操99| 婷婷婷婷色| 丁香婷婷成年| 激情无码五月天| 五月色丁香| 中文字幕人妻AV| 久久av电影| 久久98| 丁香五月婷婷亚洲另类| 五月涩涩网| 五月婷婷六月激情| 婷婷五月色花丁香社区| 99爱免费视频| 内射人妻视频国内| 婷婷四月 成人 狠狠干| 久色网| 日本丁香久在线| 天天做天天爱天天做| 99丁香婷婷综合网| 伊人综合网4| 国产67194| 五月丁香日本片| 超碰在线人妻| 五月丁香欧美综合| 99在线免费视频| 五月丁香综合久久夜夜| 亚洲第一色区| 97操碰在线97| 亚洲AV成人无码久久精品老人法拉利| 双性美人被调教到喷水A片| 伍月婷婷免费视频| 99爱视频| 色婷婷啪啪啪啪啪啪| 婷婷性爱五月天| 9久久久| www.夜夜| 久久婷婷五月综合啪| 日本九婷婷| 伊人玖玖婷婷| 综合久久五月天| 7777精品伊人久久久大香线蕉最新版| 丁香五月六月综合欧美| 98永久精品| 激情综合网五月丁香| www99久久| 色综合激情| 色婷婷影院| 大香蕉婷婷久久| 久久精品99久久久久久| 五月婷亚洲精品AV天堂| 99热乎| 久久精品99国产精品日本| 亚洲激情无码久久| 婷婷五月日本| 极品人妻VideOssS人妻| 最新久久网址| 久热免费视频| 天天操夜夜玩!| 狠狠色噜噜狠狠狠狠狠色综合久久| 日日艹思思热| 婷婷色五月大香蕉在线观看| 五月天色色网站| 丁香五月综合久久八| 男人先锋久久| 天天色天天操天天射| 99久久www| 1024在线视频| 五月丁香网站| www.色婷婷| 91dy.av| 亚洲丁香婷婷丁香五月天激情| 色色色色色色网| 国产99久| www.五月婷婷| 久久亚洲色导航| 五月婷六月| 久久婷婷五月综合97色一本| 色播播婷婷| 婷婷精品综合| mmm1717.6dbm人人爱人人操| 一片AV片免费播放| 色婷婷裸体色性在线| 五月丁香婷婷色色色| 大香蕉手机视频| 久热这里只有精品性色AV| j五月香在线| 少妇人妻综合色6699| 亚洲网视屏| 色综合久久8| 色丁香五月综合网| 亚洲情色一区| 免费看欧美成人A片无码 | 丁香婷婷九月| 婷婷丁香六月影视| 亚洲狠狠婷婷| 婷婷天堂站| 五月婷婷激情网| 激情六月婷| 亚洲婷婷视频| 禁片二区| 91久久久久久久| 婷婷六月伊人| 五月总合激情网| 久久综合九色综合97婷婷| www.91操| 色五XX| 婷婷午夜综合| 日韩AV在线免费| 久久99网站| 婷婷激情五月天色| 99热啪啪| 影音先锋91| 91在线资源| 五月综合色| 婷婷色播婷婷| 五月天婷婷综合网| 天天情色五月天| 五月久久五月激情| 五月丁香啪综合| 九九99精品| 99九九综合久久九九| 国产九月婷婷| 五月天综合视频| 开心 五月 综合| 五月天综合视频| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 久久狠狠干| site:pnnrt.com| 久久香蕉福利| 九九综合色| 这里只有精品99www| 国产婷婷色综合AV蜜臀AV | 蜜桃婷婷五月| 婷婷情色五月天| 丁香五月激情五月色综合| 色五月人妻| 第2色五月婷| AA久久| 99热播放| 伊人五月天在线| 激情九九这里只有精品| 六月婷婷私欲| 99爱最新免费视频在线观看| 日韩一66精品| 九九美女视频| 天天人人综合| 天天插天天射| 五月丁香花开综合网| 操操熟女| 婷色五月| 天天拍天天操| 天天操夜夜玩!| 色婷婷五月综合在线| 色玖玖综合网| 欧美99热| 色播激情五月天| 丁香五月成人| 一起草av| 五月丁香啪啪啪| 激情小说 五月天| 91嫩草久久| 婷婷涩五月天综合| 激情综合网激情五月婷婷| 婷婷丁香五月高清| 五月色色激情网| 五月天成人综合| 五月丁香操婷逼| 婷色成人| 久久这里在精品视频| 婷婷五月天视| 一级片sese片.COM| 丁香五月色情| 99久在线精品| 99re66热这里只有精品| 9超碰在线| 99色在线免费观看视频| 午夜成人AV在线| 五月婷婷天堂| 国产夫妻操逼内射视频| 婷婷综合五月色播| 欧美日韩aaa| 狼人久草| 色五月激情综合网| 五月天开心色色网| 狠狠婷婷综合| 婷五月天丁香婷五月| 五月婷婷久久久| 97极品在线| 亚洲精品色色| 丁香美女主播视频在线观看| 亚洲99在线| 香蕉人在线香蕉人在线 | 婷婷色综合| 97碰碰九九视频| 99热高清在线| 美女五月天婷婷| 色五月综合在线| 国产成人99久久亚洲综合精品| 狠狠干.com| 大香蕉天堂| 啪啪啪五月天| 国产 亚洲 在线| 国产露脸150部国语对白| 九九精品碰| 开心婷婷中文字慕| 婷婷五月美女直播| 九九热在线99| 3DAV亚洲香蕉久久 一区二区| 淫视馆AV在线| 丁香五月成人论坛| 欧洲色色| 五月综合激情婷婷六月色窝| 久久久精品99| 婷婷九月激情网| 亚洲国产成人综合| 久久久婷丁香五月| 五月伊人网| 色天天综合| 成年人丁香五月| 色色色五月| 婷婷六月丁香久| 久久视频婷婷| 久久久精品人妻| 黄色AAAAAAA| 丁香五月天激情五月天激情五月天激情网| 激情婷婷色五月| 欧美激情综合色综合啪啪五月| 天天综合 99久久婷婷| 五月丁香色婷婷基地| 亚洲高清在线| 婷婷色一二三区波多野结衣| oumeisesewang| 91婷婷色| 东京热五月婷婷| 色婷婷五月开心六月综合| 日日操夜夜爽| 天堂久久久久天堂网| 91久久精品无码一区二区三区| 特级片神马电影| 中文人妻AV久久人妻18| 9.1综合网| 97精品欧美91久久久久久久| 欧美碰碰碰| 日本五月婷婷久久久六月丁香| 99丁香五月婷| 无码 av电影| 青青热久久综合| 色五月开心开心五月激情五月| 99视频久久| 丁香婷婷综合色五月激情国产基地| 国产高清精品色| 国产精品久久久爽爽爽麻豆色哟哟 | 97人人操人人干| 久久久久久久久久久44| 婷婷爱五月天人人爱| 人妻少妇色综合| 色婷婷AAA| A片一曲| 996黄色片| 手机在线日韩视频中文字幕| 一级A片天天操夜夜操| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 99热这里只有精品69| 久久久久网站| 伊人大香五月天| www.9797国产| 天天舔天天爽| 99久久久久| 五月婷婷激情性爱| 五月天伊人综合| 五月久熟女| 激情爱爱网站超大免费| 九九热大香蕉| 婷婷天堂站| 9久热| 色~性~乱~伦~噜| 婷婷五月天综合网| 婷婷在线免费| 99热这里是精品| 天天操夜夜橾| 久久五月视频| 免费无码毛片一区二区A片| 婷婷瑟瑟五月天| 98永久精品| 天天干电影| 99精品爱| 色色九九五月天| 超碰在线91| 五月丁香 啪啪| 五月天激情日色在线| 天天操五月天| 激情小说色五月| 精品人妻久久久久久久| 97在线观视频免费观看| 五月丁香激情六月| 日韩在线看AV| 久噜久噜| 丁香五月网站| 大香蕉伊人99| 久久五月丁香| 成人色图情色成人网 www.5b5b5bcom 五月天 | 丁香久久| 亚洲小说五月婷婷| 五月丁香本色在线观看| 思思久久网| 七月婷婷色香综合网| ji'qi'luan'ren'lun| 久久免费9| 亚洲视频在线观看| 激情五月天色婷婷| 人妻在线观看视频| 丁香五月激情综合| 色情一区二区播放| 欧美乱码国产一级A片| www.婷婷.com| 婷婷丁香五月天亚洲| 黄色一极大片| 欧美日韩999| 深爱婷婷丁香五月激情| 香蕉狠狠爱视频| 被强行糟蹋的女人A片| 天天操天天曰| 色婷婷综合久色AV五色最新| www,setingting| 人妻AV在线观看| 99热大全在线观看| 99综合99| 五月婷久久| 伊人五月天在线| 99高级会所久久| 日韩AV中文字幕在线| 丁香五月天堂| 国产精品久久久海的味道| 97干视频| 97碰碰久久| 亚洲色99| 五月婷婷69| 婷婷色天香| 亚洲成人AV一区在线观看| 五月激情六月宗合| 婷婷第六色| 97色欧美| 无码激情AAAAA片-区区| 丁香婷婷色色| 日本激情综合| 国产99精品免费视频| 久草狼人| 亚洲欧洲美女在线观| 天天色视频| 欧美精品熟女一区二区| 婷婷六月色丁香视频在线观看| 日本人人草草| 2021日韩无码| 超碰免费成人网站| 99亚洲天堂| 激情久久久久久| 五月天激情网站| 色婷婷五月天不卡| 激情五月天网页| 丁香五月天在线视频| 五月天婷婷激情在线色图| 婷婷在线免费| 五月天婷婷基地综合网| 五月激情六月| 五月丁香六月| 99re8这里只有精品99re8热视频| 大香蕉AV在线| 91狠狠色丁香| 蜜桃婷婷丁香| av中文网站| 免费在线观看欧美激情xx小视频| 四色永久成人网站| 丁香婷婷综合影院| 伊人久久大香线蕉av一区| 天天模,夜夜模夜夜爽| 婷婷月综合| 综合九九久久| 99久久成人| 激情五月综合网| 婷婷不卡基地| 五月婷婷丁香狠狠撸久久| 思思久久99| 五月丁香成人| 91婷婷在线观看| 六月香五月婷| 五月丁香91| 第五婷婷伊人丁香色| 99精品在线| 思思99热| www.五月天。com| 亚洲人人干| www.久久五月天.com| 久久国产性爱A V| 99这里只有精品视频在线| 激情宗合哪里能看| WWW丁香五月| 四虎成人精品永久免费AV九九| 日本色色图| 99九九综合久久九九| 色欲影香| 日韩不卡123| 五月丁香婷婷成人综合网| 一级黄在线| A久网| 五月婷婷性爱网| 5月丁香六月情| 99视频网址| 国产超碰在线| AA片在线观看视频在线播放| 操碰97| 无码 av电影| 99热个人在线| 中文字幕人妻一区二区| 五月丁香六月婷| 日本黄 色 片| 在线看的免费网站| 奇米影视777在线_在线观看午夜_h小视频在线观看_岛国大片 | 五月婷婷六月丁香| 丁香五月成人论坛| 日本在线噜噜| 99色视频在线| 六月丁香啪啪啪| 五月婷婷狠狠干| 婷婷黄色| 九九色热| 亚洲色在线观看| 日本强伦片中文字幕免费看 | 大香蕉在线观看9| 51XX午夜影福利| 五月香蕉综合| 国产成人综合亚洲| 天天日天天爽| 亚洲丁香五月| 丁香婷婷网| BBWCUCKOLD精品熟妇| 日日爽天天| 9 9热这里有精品| 久久性爱视频| 丁香婷五月| 日韩 欧美 国产 一区 二区| 大香蕉视频99| 婷婷爱五月| 五月婷婷婷婷婷婷艺术| 天天肏在线观看| 婷婷亚洲在线| 大香蕉婷婷丁香天堂AV| 9久视频| 亚洲婷婷开心五月| www夜夜| 婷婷五月影院| 性爱综合网| 99综合自拍| 婷婷丁香花五月天| 亚洲激情精品| 综合网色| 国产综合A片| 婷婷五月综合网| 丁香五月天激情小说| 黄色五月婷婷| 日逼AV影音先锋男人资源站| 色婷婷88| 99热20| 婷婷五月丁香欧洲| 91丁香色| 午夜大香蕉| 久久五月天色| 亚洲精品国产成人AV在线| 色婷婷亚洲综合av| 99极品视频| 丁香婷婷91在线观看视频| 91久久久久久久久久18| 久久婷鲁| 深夜婷婷五月丁香| 91狠狠色色丁香婷婷综合久久| 欧美综合激情| 久久国产精品乱子伦_靑青草…| 激情六月婷| 国产精品电影网| 久久99网| 五月丁香少妇网| 五月综合久久| 伊人九九热| 五月婷婷六月婷| 中文中文在线| 国产老熟妇亲子乱对白| 久久99网| 综合网色| www.91婷婷| 色色国产| 综合99久久| 日屌日日操日日色| 综合网亚洲| 四季8848精品成人免费网站| 丁香六月啪啪| 日韩啪| 九九这里有精品视频| 97操碰碰无码视频| 97香蕉人人在线观看| 欧美 日韩 人妻 高清 中文| 久久久ww| 婷婷六月亚洲综合| AA片在线观看视频在线播放| 日韩999| 婷婷五月天开心网| 国产高清视频91九九九久久久| 婷婷六月天激情影院| 亚洲黄色影视| 婷婷五月在线免费| 深爱五月激情| 天天日天天舔天天摸|