关于mini v3.3 spi 1 与 RFID RC522 通信问题

2019-08-17 10:14发布

关于mini v3.3 spi 1 与 RFID RC522 通信问题
//SDA: PA4
//RST: PA3
//CLK: PA5
//MISO: PA6
//MOSI: PA7

void rc522_SPI1_Init(void)       
{
        RCC->APB2ENR|=1<<0;                                //alternate function IO reset
        RCC->APB2ENR|=1<<2;                                //all IO port A reset
        RCC->APB2ENR|=1<<3;                                //all IO port B reset
        RCC->APB2ENR|=1<<12;                          // SPI1 clock enable
       
        GPIOA->CRL&=0X00003FFF;                 //
        GPIOA->CRL|=0XBBB33000;                //PA 4 SDA(CS)3(RST)5(CLK)6(MISO)7(MOSI)  8->B on May 27
        //GPIOA->ODR|=0X7<<5;         //PA5.6.7é&#207;à-

        SPI1->CR1|=0<<10;
        SPI1->CR1|=1<<9;
        SPI1->CR1|=1<<8;  
        SPI1->CR1|=1<<2; //SPI&#214;÷&#187;ú
        SPI1->CR1|=0<<11;//8bitêy&#190;Y&#184;&#241;ê&#189;       
        SPI1->CR1&=~0x02; //&#191;&#213;&#207;D&#196;£ê&#189;&#207;&#194;SCK&#206;a0 CPOL=0
        SPI1->CR1&=~0x01; //êy&#190;Y2é&#209;ù′óμúò&#187;&#184;&#246;ê±&#188;&#228;±&#223;&#209;&#216;&#191;aê&#188;,CPHA=0  
        SPI1->CR1|=7<<3; //Fsck=Fcpu/4  //7 -> 6 on May 27
        SPI1->CR1|=0<<7; //MSBfirst   
        SPI1->CR1|=1<<6; //SPIéè±&#184;ê1&#196;ü
}

spi相关设置如上描述
其中很奇怪的是一开始我用示波器看SCK 一直处在3.3V高电平
将MISO改为复用推挽输出后 居然测到时钟了,时钟正常。这里就很奇怪
接着抓miso来看, 有波形但是基本在3V上下,幅度很小大概在500mv左右,不知道为什么大概八个10一重复。
spi这个几个io口到底应该怎么设置呢?
谢谢

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
464893214
1楼-- · 2019-08-17 14:37
正点原子 发表于 2017-5-31 22:01
帮顶

找到原因了,主要原因是复位和片选的 置位复位寄存器没有改过来还是按照原来的口设置的而只改了spi的那三个接口。
另外好奇的是,mosi 可以设置复用推挽输出或者上下拉输入都可以工作,这是为什么呢?
464893214
2楼-- · 2019-08-17 16:38
现在还是这个情况,难道miso的波形就是像那种摆幅很小的样子? 但是通信还是不成功啊
正点原子
3楼-- · 2019-08-17 21:39
帮顶

一周热门 更多>