此帖出自stm32/stm8论坛
最新回复
哥们,我情况跟你类似:
1. 读SPI2->DR之前必须往SPI2->DR写个什么数(我写0xFF),否则什么都读不到,修改程序后来了第二个问题;
2. 第一个字符死活读不出来,读SPI2->DR是0xFF,实际上示波器观察MISO数据是0x60;后面的数据暂时看起来读入正常;
寄存器设置如下:
static void spiConfig(void){
//SPI2->CRCPR = 0x07; // as default
SPI2->CR1 = 0x202F; // CRCEN, MSB first, 125 kHz, Master, CPOL = 1, CPHA = 1
SPI2->CR2 = 0x0004; // SSOE
SPI2->CR1 = 0x206F; // SPI EN
}
void spi_sendByte(uint8_t outData){
SPI2->DR = outData;
while (SPI2->SR & 0x0080); // busy wait
}
uint8_t spi_readByte(void){
SPI2->DR = 0xFF;
while (SPI2->SR & 0x0080); // busy wait
return SPI2->DR;
}
还有,很奇怪,SPI2->CR2如果不置SSOE的话,写入SPI2->CR1里的0x206F会变成0x202E,也就是说SPE和MSTR被自动清零了
详情
回复
发表于 2010-8-19 11:32
| ||
|
||
| |
|
|
此帖出自stm32/stm8论坛
| ||
|
||
活动 更多>>
开源项目 更多>>
随便看看
查找数据手册?
EEWorld Datasheet 技术支持 相关文章 更多>>
新帖速递
关闭
站长推荐 1/8
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
|