stm32 can通訊傳送解釋

2021-08-15 05:30:30 字數 1205 閱讀 5660

uint8_t can_transmit(can_typedef* canx, cantxmsg* txmessage)

else if ((canx->tsr&can_tsr_tme1) == can_tsr_tme1)

else if ((canx->tsr&can_tsr_tme2) == can_tsr_tme2)

else

if (transmit_mailbox != can_txstatus_nomailbox)//主要是配置郵箱的4個暫存器

else//擴充套件偵

/* set up the dlc */

txmessage->dlc &= (uint8_t)0x0000000f;//郵箱資料長度和時間戳暫存器can_tdtxr

canx->stxmailbox[transmit_mailbox].tdtr &= (uint32_t)0xfffffff0;

canx->stxmailbox[transmit_mailbox].tdtr |= txmessage->dlc;//資料長度

/* set up the data field */設定資料暫存器有高4位元組和低4位元組

canx->stxmailbox[transmit_mailbox].tdlr = (((uint32_t)txmessage->data[3] << 24) |

((uint32_t)txmessage->data[2] << 16) |

((uint32_t)txmessage->data[1] << 8) |

((uint32_t)txmessage->data[0]));

canx->stxmailbox[transmit_mailbox].tdhr = (((uint32_t)txmessage->data[7] << 24) |

((uint32_t)txmessage->data[6] << 16) |

((uint32_t)txmessage->data[5] << 8) |

((uint32_t)txmessage->data[4]));

/* request transmission */

canx->stxmailbox[transmit_mailbox].tir |= tmidxr_txrq;//請求傳送

} return transmit_mailbox;//返回0~2就成功,4失敗.

}

STM32 CAN通訊問題

檢舉 2012 07 04 20 59 breath123 分類 工程技術科學 瀏覽974次 can通訊測試中 使能報文標示符過濾器按照標示符的內容進行比對過濾,擴充套件id不是如下的就拋棄掉,是的話,會存入fifo0。can filterinitstructure.can filteridhigh...

關於STM32 CAN 傳送失敗問題解釋

首先解釋一下can幾個配置的功能 1.can initstruct.can ttcm disable 這個只在某些can標準中使用,就設定為disable。2.can initstruct.can abom enable 這個位我們使能該功能,使用該功能可以在節點出錯離線後適時的自動恢復,不需要軟體...

STM32 CAN通訊硬體設計

隔離方案就不說了,之前的usb轉485工具的開發在這塊已經有些基礎。其實板上非隔離can介面設計還有一些額外的注意點。回到最基礎的知識依然是cmos ttl 推挽 開漏的問題。正點原子開發板,can電路最為簡易,基本無可用性 看看乙個常用電路 非隔離 tx rx直連stm32引腳 ft 覺得還是要使...