完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是新手。我一直在PIC16F18345上工作。我试图配置与图片的ADXL345,但我没有得到输出,我将分享我的代码,请帮助我哪里做错了。我研究了所有的寄存器和逐位配置。/**Generated Main Source FileCompany:Microchip Technology Inc.File Name:main.cSummary:这是使用MPLAB(c)Code ConfiguratorDescription:这个头文件为所有模块sele提供驱动程序API的实现在GUI中进行CTE。生成信息:产品修订:MPLAB(c)代码配置器-4.0设备:PIC16F18345驱动程序版本:2.00生成的驱动程序针对以下内容进行测试:编译器:XC8 1 35 MPLAB:MPLAB X 3.40*//*(c)2016微芯片技术公司及其子公司。你可以使用这个软件和任何与微芯片产品无关的衍生品。这个软件是由Microchip提供的“原样”。本软件不作任何保证,不论其明示、默示或陈述,包括任何对特定用途的非侵权、适销性和适用性的默示保证,或其与微芯片产品的相互作用、与其他产品的结合或在任何应用中使用。如果微芯片被告知有责任承担与软件、无论如何引起的任何间接、特殊、惩罚、间接或随后的损失、损坏、成本或费用。在法律允许的最大限度内,微芯片对与本软件有关的所有索赔的全部责任将不超过费用,如果有的话,您已经直接向微芯片支付了用于本软件的费用。*/#包括“mcc_生成_文件/mcc.h”/*主应用*/*主应用*/定义ss PORTCbits.RC6SSPORTCbits.主应用*/*主应用*/*主应用*/\*定义ss PORTCbits.RC6CORTCbits.RC6vo6voidADC_init(void)ADC_init(无效);voIDSPI_IDSPI_init_init(void)ADC_ADC_init_init(void);void);无效SPI_init_init(void)无效SPI_init(void)无效SPI_init_init(无效SPI_init(无效SPI_init(vo(“%cnr”,spi_read())}}无效SPI_init(){{{******SSP1STAT位******************************_S S P****************__S S P**********_SSP1STAT位.BF=0;//缓冲器STAT比特SSP1STAT比特SSP1STAT比特SSP1STAT比特SSP1E=1;//CLOCK从活动到IDLE//SSP1STATATATAT位的IDLE//SSP1STAT比特:1;CKE=1;//CLOCK从活动到IDLE到IDLE//SSP1STAT位。D_nA==///////////SSP1P1STASTASTAT比特D_nA=====SMP=1;//采样在END//SSP1STATbits.UA=.**************************************************************************************************************************************************************************************************************_SSP1的锁定状态是高级别SSP1P1CON1比特IS IS IS IS高级别SSP1CON1比特___SSP1CON1比特___1 1 1 1 1,锁锁定状态状态为:SSP1CON1比特是高级别SSP11比特SSP11比特1,SSP11比特1,SSPEN=0;SSPEN=0;/SPI主模式时钟=Fosc/4SSSSPOV=0;//SSP1CON1比特.SSPOV=0;//SSP1CON1比特.WCOL=0;///没有碰撞传输模式仅对没有碰撞传输模式进行碰撞传输,WCOL=0;///没有碰撞传输模式,只有/***************************SSPxCON1*********//SSP1CON3比特SSP1CON3比特.ACKTIM=//SSP1CON3比特=//SSP1CON3比特.AHEN=//SSP1CON3比特=//SSP1CON3比特.AHEN=///SSP1CON3比特=.BOEN=//SSP1CON3比特.BOEN=//SSP1CON3比特=.BOEN=CDE=//SSP1CON3bits.SCIE=//SSP1CON3bits.SDAHT=/*****SSPxBUF*******//*******SSPxBUF*******/*******SSPxADD*******///SSP1ADD=0X0C;//I2C模式/*****SSPxADD*********/SSP1CON1bits.SSPEN=1;}无符号char spi read(){无符号char temp ss=0;{PORTBbits.RB6=1;(!SSP1STATbits.BF)printf("spireadingnr");temp=SSPBUF;PORTBbits.RB6=0;ss=1;return temp;}/**End of File*/PIC作为SPI主MPLABXIdev4.05xc8编译器
|
|
相关推荐
8个回答
|
|
你想要达到什么目标?你好像在这里混合东西。为什么不使用MCC生成函数呢?如果用MCC正确地进行图形配置,那么为什么要在外围设备已经在MCC生成的文件中时,用main.C代码重新初始化外围设备呢?你想读什么?你发送的唯一东西是Primtf(“…”),这是发送给我的序列号。
|
|
|
|
这个软件是由Microchip提供的,就像MPLAB X一样。读()是错误的。您正在等待spi交换完成,但是尚未加载缓冲区。数据必须位于主缓冲区和从缓冲区中,以便能够交换它们。您可以输入一个虚值,比如0xff。读和写非常相似。用虚拟机加载缓冲区,检查状态,然后读取缓冲器。
|
|
|
|
正如Gort所说,它是写给SSPBUF的,实际上是使SSP外围设备进行交换。
|
|
|
|
忘掉印记吧。在这里,我用我的PIC使用SPI通信配置ADXL345。我一直在尝试从ADXL345获取数据。我没有从ADXL345获得任何数据。我的代码有问题吗?
|
|
|
|
我会努力让你知道
|
|
|
|
当我输入SSPBUF时,SSPBUFI=0;我连续得到“229”是什么意思。当我输入SSPBUF时,我期待来自ADXL345的值;SSPBUFI= 0xFF;我连续地得到0。我很困惑。时钟或振荡器有什么问题吗?
|
|
|
|
事实上,这意味着你的芯片在工作!您正在从寄存器0x00读取,该寄存器是“ID”寄存器,它包含0b11100101=0xE5=229您实际读取ADXL345数据表了吗,以及如何访问它的寄存器?
|
|
|
|
清除DATA_FORMAT寄存器(地址0x31)中的SPI位(位D6)选择4线模式,而设置SPI位选择3线模式。最大SPI时钟速度为5MHz,最大负载为100pF,定时方案遵循时钟极性(CPOL)=1和时钟相位(CPHA)=1。如何访问这个“
|
|
|
|
只有小组成员才能发言,加入小组>>
5244 浏览 9 评论
2035 浏览 8 评论
1955 浏览 10 评论
请问是否能把一个ADC值转换成两个字节用来设置PWM占空比?
3209 浏览 3 评论
请问电源和晶体值之间有什么关系吗?PIC在正常条件下运行4MHz需要多少电压?
2260 浏览 5 评论
779浏览 1评论
672浏览 1评论
有偿咨询,关于MPLAB X IPE烧录PIC32MX所遇到的问题
598浏览 1评论
PIC Kit3出现目标设备ID(00000000)与预期的设备ID(02c20000)不匹配。是什么原因
682浏览 0评论
579浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 09:20 , Processed in 1.962315 second(s), Total 91, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号