完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
请问如何以查询的方式使用SPI收发数据?C6748
|
|
相关推荐
9 个讨论
|
|
现在CLK SIMO信号都是有的,CS也是有的,就是SOMI不正常,一直是高电平,而且rx读出来都是0x00 初始化程序是改自开发板: //** Configures SPI Controller static void SetUpSPI(void) [ unsigned char cs = 0x20;//0x04;****************** unsigned char dcs = 0x20;//0x04;****************** unsigned int val = SIMO_SOMI_CLK_CS5; SPIReset(SOC_SPI_0_REGS); SPIOutOfReset(SOC_SPI_0_REGS); SPIModeConfigure(SOC_SPI_0_REGS, SPI_MASTER_MODE); SPIClkConfigure(SOC_SPI_0_REGS, 150000000, 1000000, SPI_DATA_FORMAT0);//SCLK原为1M SPIPinControl(SOC_SPI_0_REGS, 0, 0, &val); SPIDefaultCSSet(SOC_SPI_0_REGS, dcs); /* Configures SPI Data Format Register */ SPIConfigDataFmtReg(SPI_DATA_FORMAT0); /* Selects the SPI Data format register to used and Sets CSHOLD * to assert CS pin(line) */ SPIDat1Config(SOC_SPI_0_REGS, (SPI_CSHOLD | SPI_DATA_FORMAT0), cs); /* map interrupts to interrupt line INT1 */ SPIIntLevelSet(SOC_SPI_0_REGS, SPI_RECV_INTLVL | SPI_TRANSMIT_INTLVL); /* Enable SPI communication */ SPIEnable(SOC_SPI_0_REGS); ] //** Configures Data Format register of SPI static void SPIConfigDataFmtReg(unsigned int dataFormat) [ /* Configures the polarity and phase of SPI clock */ SPIConfigClkFormat(SOC_SPI_0_REGS,(SPI_CLK_POL_HIGH | SPI_CLK_INPHASE),dataFormat);//SPI_CLK_POL_HIGH SPI_CLK_OUTOFPHASE //SPIConfigClkFormat(SOC_SPI_0_REGS,(SPI_CLK_POL_LOW | SPI_CLK_INPHASE),dataFormat); /* Configures SPI to transmit MSB bit First during data transfer */ SPIShiftM***First(SOC_SPI_0_REGS, dataFormat); /* Sets the Charcter length */ SPICharLengthSet(SOC_SPI_0_REGS, CHAR_LENGTH, dataFormat); ] //** Enables SPI Transmit and Receive interrupt.** Deasserts Chip Select line. static void SpiTransfer(void) [ SPIIntEnable(SOC_SPI_0_REGS, (SPI_RECV_INT | SPI_TRANSMIT_INT)); while(flag); flag = 1; /* Deasserts the CS pin(line) */ SPIDat1Config(SOC_SPI_0_REGS, SPI_DATA_FORMAT0, 0x20); ] //** Data transmission and receiption SPIIsr void SPIIsr(void) [ unsigned int intCode = 0; IntEventClear(SYS_INT_SPI0_INT); intCode = SPIInterruptVectorGet(SOC_SPI_0_REGS); while (intCode) [ if(intCode == SPI_TX_BUF_EMPTY) [ SPITransmitData1(SOC_SPI_0_REGS, tx_data); SPIIntDisable(SOC_SPI_0_REGS, SPI_TRANSMIT_INT); ] if(intCode == SPI_RECV_FULL) [ rx_data = (short)SPIDataReceive(SOC_SPI_0_REGS); flag = 0; SPIIntDisable(SOC_SPI_0_REGS, SPI_RECV_INT); ] intCode = SPIInterruptVectorGet(SOC_SPI_0_REGS); ] ] |
|
|
|
|
|
zsyat 发表于 2018-8-2 07:11 你单步调试一下这个函数,看看是什么情况 while (intCode) [ if(intCode == SPI_TX_BUF_EMPTY) [ SPITransmitData1(SOC_SPI_0_REGS, tx_data); SPIIntDisable(SOC_SPI_0_REGS, SPI_TRANSMIT_INT); ] if(intCode == SPI_RECV_FULL) [ rx_data = (short)SPIDataReceive(SOC_SPI_0_REGS); flag = 0; SPIIntDisable(SOC_SPI_0_REGS, SPI_RECV_INT); ] intCode = SPIInterruptVectorGet(SOC_SPI_0_REGS); ] ] |
|
|
|
|
|
zsyat 发表于 2018-8-2 08:04 你好,要使用SPI接口的不同的spi设备,需要使能不同的cs信号。可以通过SPI Default Chip Select Register (SPIDEF)来使能不同的片选信号。 |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
672 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
599 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1052 浏览 1 评论
736 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
523 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
158浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
120浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
124浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
165浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 05:10 , Processed in 0.851611 second(s), Total 59, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号