diff --git a/README.md b/README.md index 42695d1..a64b114 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,10 @@ The original example contains code for the usage of only one of the two availabl Atmel's ASF drivers for MCAN do not allow fine control of the baudrate parameters, so a patch is needed. The patch implemented here is based on the solution presented in @borkedLabs 2017 article: https://borkedlabs.com/blog/2017/09-24-samc21-same70-samv71-canbus-bosch-lessons-learned/ +The patch affects the following files: +- `src/ASF/sam/drivers/mcan/mcan.h` (`mcan_set_baudrate` prototype) +- `src/ASF/sam/drivers/mcan/mcan.c` (`mcan_set_baudrate` and `_mcan_set_configuration`) + #### Bit timing values Bit timing values, defined in `conf_mcan.h`, were obtained experimentally in order to achieve a 1Mbps baudrate. diff --git a/src/ASF/sam/drivers/mcan/mcan.c b/src/ASF/sam/drivers/mcan/mcan.c index bc98d0a..27a7974 100644 --- a/src/ASF/sam/drivers/mcan/mcan.c +++ b/src/ASF/sam/drivers/mcan/mcan.c @@ -296,7 +296,10 @@ void mcan_init(struct mcan_module *const module_inst, Mcan *hw, * \brief Set MCAN baudrate. * * \param[in] hw Pointer to the MCAN module instance - * \param[in] baudrate MCAN baudrate + * \param[in] nbrp MCAN baudrate pre-scaler + * \param[in] nsjw MCAN synchronization jump width (TQs) + * \param[in] ntseg1 MCAN segment 1 width (TQs) + * \param[in] ntseg2 MCAN segment 2 width (TQs) */ void mcan_set_baudrate(Mcan* hw, uint32_t nbrp, uint32_t nsjw, uint32_t ntseg1, uint32_t ntseg2) { diff --git a/src/qs_mcan_basic.c b/src/qs_mcan_basic.c index 12f6eeb..fb0f205 100644 --- a/src/qs_mcan_basic.c +++ b/src/qs_mcan_basic.c @@ -462,7 +462,7 @@ int main(void) case '4': printf(" 4: MCAN0 - Set extended filter ID 0: 0x100000A5, store into Rx buffer. \r\n"); mcan_set_extended_filter_0(&mcan0_instance); - break; + break; case '5': printf(" 5: MCAN0 - Set extended filter ID 1: 0x10000096, store into Rx FIFO 1. \r\n");