Arduino 将SPI的SERCOM引脚设置为SAMD21上主控的对立面不工作
我想让我的SAMD21芯片成为SPI的奴隶 我有以下PIN码:Arduino 将SPI的SERCOM引脚设置为SAMD21上主控的对立面不工作,arduino,spi,samd21,Arduino,Spi,Samd21,我想让我的SAMD21芯片成为SPI的奴隶 我有以下PIN码: PB10-as-MOSI PB11作为SCK PA10 as SS PA12作为味噌 这些引脚大部分属于SERCOM4 但是,当我按如下方式设置这些引脚时,它们无法正常工作: PORT->Group[PORTB].PINCFG[10].bit.PMUXEN = 0x1; //Enable Peripheral Multiplexing for SERCOM4 SPI PA12 Arduino PIN22 PORT-&g
- PB10-as-MOSI
- PB11作为SCK
- PA10 as SS
- PA12作为味噌
PORT->Group[PORTB].PINCFG[10].bit.PMUXEN = 0x1; //Enable Peripheral Multiplexing for SERCOM4 SPI PA12 Arduino PIN22
PORT->Group[PORTA].PMUX[6].bit.PMUXE = 0x3; //SERCOM 4 is selected for peripheral use of this pad (0x3 selects peripheral function D: SERCOM-ALT)
PORT->Group[PORTB].PINCFG[11].bit.PMUXEN = 0x1; //Enable Peripheral Multiplexing for SERCOM4 SPI PB09 Arduino PIN16
PORT->Group[PORTB].PMUX[4].bit.PMUXO = 0x3; //SERCOM 4 is selected for peripheral use of this pad (0x3 selects peripheral function D: SERCOM-ALT)
PORT->Group[PORTA].PINCFG[10].bit.PMUXEN = 0x1; //Enable Peripheral Multiplexing for SERCOM4 SPI PB10 Arduino PIN23
PORT->Group[PORTB].PMUX[5].bit.PMUXE = 0x3; //SERCOM 4 is selected for peripheral use of this pad (0x3 selects peripheral function D: SERCOM-ALT)
PORT->Group[PORTA].PINCFG[12].bit.PMUXEN = 0x1; //Enable Peripheral Multiplexing for SERCOM4 SPI PB11 Arduino PIN24
PORT->Group[PORTB].PMUX[5].bit.PMUXO = 0x3; //SERCOM 4 is selected for peripheral use of this pad (0x3 selects peripheral function D: SERCOM-ALT)
我使用图书馆
我使用arduino IDE和SAMD:M0或somethings M0 Pro(Navctive)板布局对芯片进行编程
根据文件要求,销应:
- |1 | 1在配置中混合使用PORTA和PORTB在我看来是错误的,但可能只是奇怪的顺序?你能澄清一下哪些线设置了哪些引脚吗?“工作不正常”还需要更多细节。@domen感谢您的回复。Sercom4看起来确实有点混搭(参见我添加的文档)。我只是从其他地方添加了一个slave select,但我认为这不会是一个问题。工作不正常意味着:我没有收到来自主设备的消息,并且从设备选择中断没有触发。你确定
代表PORT->Group[PORTB]吗。PINCFG[10]。bit.PMUXEN
,以此类推代表其余管脚。在不进入数据表的情况下,它看起来非常错误,如果它确实正确的话,至少应该说明为什么它看起来如此错误。另一方面,PORTB/10与问题中的PB10相匹配,其他引脚也一样,所以可能只是注释不同步。然后,下一个奇怪的部分是PMUXE/O,它似乎再次混淆了。PA12