bxCAN có 3 chế độ hoạt động: initialization, normal và sleep. Sau khi reset phần cứng,
bxCAN ở trong chế độ sleep để tiết kiệm năng lượng và pull-up bên trong để kích hoạt
CANTX. Phần mềm yêu cầu bxCAN nhảy vào chế độ initialization hoặc sleep bằng cách
set INRQ hoặc SLEEP bit trong thanh ghi CAN_MCR. Khi đã được thiết lập, bxCAN
xác nhận bằng cách set INAK hoặc SLAK bit trong thanh ghi CAN_MSR và pull-up bên
trong bị disable. Khi INAK và SLAK không được set thì bxCAN ở chế độ normal. Trước
khi vào chế độ normal thì bxCAN luôn phải synchronize trên CAN bus.
Để đồng bộ, bxCAN đợi cho đến khi CAN bus rảnh, nghĩa là 11 recessive bit liên tiếp
được giám sát trên CANRX.
23.4.1 Initialization mode
Khởi tạo phần mềm có thể đã được thực hiện trong khi phần cứng đang trong chế độ khởi
tạo. Để vào chế độ này phần mềm set INRQ bit trong thanh ghi CAN_MCR và đợi phần
cứng xác nhận yêu cầu bằng cách set INAK bit trong thanh ghi CAN_MSR.
Để ra khỏi chế độ này, phần mềm xóa INRQ bit. bxCAN thoát khỏi chế độ khởi tạo khi
INAK bit được xóa bởi phần cứng.
Khi ở chế độ khởi tạo, tất cả tin nhắn truyền và từ CAN bus đều dừng lại và trạng thái
của đầu ra CAN bus CANTX là recessive (high)
Vào chế độ khởi tạo không thay đổi bất cứ cấu hình nào của các thanh ghi.
Để khởi tạo trình điều khiển CAN, phần mềm thiết lập Bit Timing (CAN_BTR) và thanh
ghi chức năng CAN (CAN_MCR).
Để khởi tạo các thanh ghi liên quan đến CAN filter bank (chế độ, scale, hàng đợi FIFO,
các giá trị lọc và kích hoạt), phần mềm phải set FINIT bit (CAN_FMR). Khởi tạo lọc
cũng cần làm bên ngoài chế độ khởi tạo.
Khi FINIT =1, CAN nhận sẽ bị disable.
Giá trị lọc cũng có thể được sửa bằng cách deactiving các bit liên quan đến filter
activation (trong thanh ghi CAN_FA1R).
23.4.2 Normal mode
Khi khởi tạo hoàn tất, phần mềm phải yêu cầu phần cứng vào chế độ normal, để đồng bộ
trên CAN bus và bắt đầu việc truyền nhận. Vào chế độ normal, bằng cách xóa INRQ bit
trên thanh ghi CAN_MCR và đợi phần cứng xác nhận yêu cầu bằng cách xóa INAK bit