完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
[size=13.3333330154419px] 你好,我处最近在使用ADuC7039芯片的SPI通讯(从机模式)时,从机无法发出任何数据和信号,尝试了很多方法依然不行。以下是我的SPI通讯的从机程序主要部分,请帮忙核查或者纠正一下,或者直接提供该芯片的SPI通讯例程也行。谢谢贵公司的帮助!
[size=13.3333330154419px]int main(void) [size=13.3333330154419px]{ [size=13.3333330154419px]while((PLLSTA&0x2)==0) {} // Ensure That thePLL is locked to the 3% [size=13.3333330154419px] // SysClock=20.48MHz/2=10.24MHz (POWCON:CD=1 by default) [size=13.3333330154419px]//-------void main()------------ [size=13.3333330154419px] GPCON = 0x00001111; // GPIO configured as SPI IO [size=13.3333330154419px] GPSET = 0x00000000; // GPSET=0 does not affect GPIO output level [size=13.3333330154419px] GPCLR = 0x00000000; // GPCLR=0 does not affect GPIO output level [size=13.3333330154419px]// GPDAT = 0x34000000; //GPIO_2(MISO)/4/5 set as output, write 1; others GPIO_x£¨/SS, SCLK, MOSI£©as input [size=13.3333330154419px] GPDAT = 0x30000000; //--4/5 set as output, write 1; SPI不用去设置了吗? [size=13.3333330154419px] SPICON = 0x0809;//=0x0009;//0x0005;//=0x4861; // 这几个都试过了,不行! [size=13.3333330154419px]/* IRQ/FIR setup */ [size=13.3333330154419px] IRQ = Vector_IRQ; // no use? [size=13.3333330154419px] FIQ = Vector_FIQ; [size=13.3333330154419px] IRQEN = 0x00000020; // SPI int [size=13.3333330154419px] FIQEN = 0x00000100; // ADuC7039 only: Enable ADC int [size=13.3333330154419px] while(1) // Infinite Loop [size=13.3333330154419px] { } [size=13.3333330154419px]} [size=13.3333330154419px]/* FIQ service */ [size=13.3333330154419px]void Vector_FIQ(void) [size=13.3333330154419px]{ [size=13.3333330154419px].....省略....// [size=13.3333330154419px]} [size=13.3333330154419px]void IRQ_Handler()__irq //SPI int [size=13.3333330154419px] { [size=13.3333330154419px] unsigned short temp_SPI; [size=13.3333330154419px] temp_SPI = IRQSTA; [size=13.3333330154419px]// if((IRQSTA & 0x200) != 0x000) // IRQSTA[9]-> SPI [size=13.3333330154419px] if((SPISTA & 0x1) != 0x0) // [size=13.3333330154419px] { [size=13.3333330154419px] GPSET = 0x00100000; // 此处用来点亮二极管,用以判断是否产生该中断。结果灯已点亮!! [size=13.3333330154419px] SPI_rd_data = SPIRX; //接着在MISO端口上始终是高电平,没有任何变化! [size=13.3333330154419px] switch (SPI_rd_data) [size=13.3333330154419px] { [size=13.3333330154419px] case 1: [size=13.3333330154419px] SPITX= 0x01; //ADC_T; [size=13.3333330154419px] break; [size=13.3333330154419px] case 2: [size=13.3333330154419px] SPITX= 0x22; //ADC_V; [size=13.3333330154419px] break; [size=13.3333330154419px] case 3: [size=13.3333330154419px] SPITX= 0x33; //ADC_I; [size=13.3333330154419px] break; [size=13.3333330154419px] case 4: [size=13.3333330154419px] SPITX= 0x44; //ADC0ACC; [size=13.3333330154419px] break; [size=13.3333330154419px] default: [size=13.3333330154419px] break; [size=13.3333330154419px] } [size=13.3333330154419px] } [size=13.3333330154419px] return; [size=13.3333330154419px] } |
|
相关推荐
2 条评论
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
998 浏览 2 评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1392 浏览 2 评论
ADP5092 SYS端口为2.09V,但是REG_OUT为0是什么原因?
1940 浏览 1 评论
ad7193差分输入ain1与ain2差是正值时,读到电压与实际值误差小,但为负值值,误差就变的很大
4273 浏览 2 评论
9065 浏览 1 评论
ADC3442采集,分析数据出现有规则毛刺,请问是哪方面的问题啊?
1540浏览 3评论
AD7190状态寄存器一直是0x80,连续转换模式下RDY不拉低
1699浏览 2评论
1001浏览 2评论
1677浏览 2评论
给ADUM4223 增加信号驱动15V电压就不正常, 波动很大会被烧是什么情况?
1393浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 04:21 , Processed in 1.285149 second(s), Total 92, Slave 73 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号