完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
由于项目成本要求降低,就选用了N76E003这颗芯片,但是由于对芯片不熟,有些问题要请教大家,就是用spi去读写带spi的芯片数据时,怎么配置读写函数?
void SPI_Configuration(void) { P15_Quasi_Mode; // P15 (SS) Quasi mode P10_Quasi_Mode; // P10(SPCLK) Quasi mode P00_Quasi_Mode; // P00 (MOSI) Quasi mode P01_Quasi_Mode; // P22 (MISO) Quasi mode set_DISMODF; // SPI 禁止模式错误检测 clr_SSOE; // 从机选择输出使能位0 = ss作为普通 I/O. clr_LSBFE; // MSB first 0 = SPI优先传输最高位MSB数据 clr_CPOL; // The SPI clock is low in idle mode set_CPHA; // The data is sample on the second edge of SPI clock set_MSTR; // SPI in Master mode SPICLK_DIV16; // Select SPI clock set_SPIEN; // Enable SPI function clr_SPIF; } /******************************************************************************* ** Function name: SPI_SendByte ** ** Descriptions : SPI发送一个字节 ** *******************************************************************************/ void SPI_SendByte(UINT8 ch) { //SPSR –SPI 状态寄存器 while((SPSR & SET_BIT2) != 0);//有数据待发送或是读取 //SPDR – SPI数据寄存器 SPDR = ch; Timer0_Delay10us(1); while(!(SPSR & SET_BIT7)); clr_SPIF; } /******************************************************************************* ** Function name: SPI_ReadByte ** ** Descriptions : SPI读取一个字节 ** *******************************************************************************/ uint8_t SPI_WrRdByte(uint8_t byte) { while((SPSR & SET_BIT2) != 0); SPDR = byte; while(!(SPSR & SET_BIT7)); clr_SPIF; byte = SPDR; return byte; } |
|
相关推荐
1个回答
|
|
sp; //配置P15为SPI_SCK引脚
P04_Quasi_Mode; //配置P04为SPI_MISO引脚 P03_Quasi_Mode; //配置P03为SPI_MOSI引脚 SPCTL = 0x53; //配置SPI控制器 SPDAT = 0x00; //SPI发送数据寄存器初始化 } void SPI_WriteByte(unsigned char dat) { SPDAT = dat; while((SPSTAT&0x80)==0){} } unsigned char SPI_ReadByte(void) { SPDAT = 0xFF; while((SPSTAT&0x80)==0){} return SPDAT; } 以上是N76E003芯片配置SPI读写函数的示例代码。其中SPI_Configuration函数用于对SPI控制器进行配置,包括设置SPI_SCK、SPI_MISO和SPI_MOSI引脚的功能,以及配置SPI控制器的工作模式等。SPI_WriteByte函数用于向带SPI的芯片写入数据,将要写入的数据通过SPDAT寄存器写入,通过检测SPSTAT寄存器的状态位来判断数据是否发送完成。SPI_ReadByte函数用于从带SPI的芯片读取数据,先向SPDAT寄存器写入0xFF,然后同样通过检测SPSTAT寄存器的状态位来判断读取的数据是否可用。 |
|
|
|
只有小组成员才能发言,加入小组>>
3280 浏览 9 评论
2958 浏览 16 评论
3460 浏览 1 评论
9005 浏览 16 评论
4052 浏览 18 评论
1117浏览 3评论
574浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
571浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2304浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1860浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:23 , Processed in 1.344236 second(s), Total 80, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号