标题:
请求SPI C原程序
[打印本页]
作者:
hgwangweilin
时间:
2005-9-14 17:50
标题:
请求SPI C原程序
本人初学NE64,可是在freescale 的文档中没有找到有关SPI通信的C语言的原程序,只找到
ASM程序;我需要SPI功能与AD采集芯片通信。请前辈指点在那里可下载到例程?谢谢!!!
作者:
pupist
时间:
2005-9-15 19:43
freescale给的那个smac里肯定有 找找
作者:
seuafu2005
时间:
2005-9-16 09:42
恩,NE64虽然是16位机,但是和S08的SPI模块相差不大,可以借鉴。
可以到这个网页下载http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=ZRP-1&nodeId=01J4Fs862825657103#documentation
SMAC里面有SPI的通讯程序
作者:
flybug
时间:
2005-9-16 12:29
http://www.w2sc.com/ 网站怎么上不去啊?
作者:
dinosaur
时间:
2005-9-16 18:21
MC9S12NE64在线座谈 http://www.freescale.com.cn/Products/MC9S12NE64.asp
MC9S12NE64在线座谈问題解答: http://www.freescale.com.cn/Products/mc9s12ne64_faq.asp
作者:
Carter
时间:
2005-9-24 22:08
http://www.w2sc.com/ 网站上不去
作者:
WXW816
时间:
2005-9-28 16:43
标题:
asm也没找到阿
asm也没找到阿,给一份吧
作者:
MINIQQ
时间:
2005-9-29 13:51
本人使用DP256。也需要SPI功能,请前辈指点是否可以和上面的一样使用那个例程呢?
作者:
onion2829
时间:
2005-10-10 19:36
芯片手册里面没有说吗?这个模块又不是很难的(我用的是GC32的)
作者:
asddsa
时间:
2005-10-11 09:39
#define _ADC
#include "..\hc908jk3.h"
#include "..\port.h"
#include "..\common.h"
// Conversion complete flag or conversion complete interrupt
// Selectable ADC clock
//#define aADSCR 0x003C // ADC Status and Control Register 142
//#define aADR 0x003D // ADC Data Register 144
//#define aADCLK 0x003E // ADC Clock Register 145
//#define aADSCR 0x003C // ADC Status and Control Register 142
#define ADC_COCO 7 // Conversion Complete 0
#define ADC_AIEN 6 // ADC Interrupt Enable 0
#define ADC_ADCO 5 // ADC Continuous Conversion 0
#define ADC_ADCH4 4 // ADC Channel select 1
#define ADC_ADCH3 3 // 1
#define ADC_ADCH2 2 // 1
#define ADC_ADCH1 1 // 1
#define ADC_ADCH0 0 // 1
//#define aADCLK 0x003E // ADC Clock Register 145
#define ADC_ADIV2 7 // ADC Clock Prescaler 0
#define ADC_ADIV1 6 // 0
#define ADC_ADIV0 5 // 0
//#define aADSCR 0x003C // ADC Status and Control Register 142
// COCO 7 // Conversion Complete 0
// 1 Conversion Complete(AIEN=0)
// 0 Conversion not Complete(AIEN=0) / CPU interrupt (AIEN=1)
// AIEN 6 // ADC Interrupt Enable 0
// 1 ADC interrupt Enabled
// 0 ADC interrupt Disabled
// ADCO 5 // ADC Continuous Conversion 0
// 1 Continuous ADC confersion
// 0 One ADC conversion
// ADCH 4:0 4 // ADC Channel select 1
// ADCH4 ADCH3 ADCH2 ADCH1 ADCH0 ADchannel Input Select
// 0 0 0 0 0 AD0 PTB0
// 0 0 0 0 1 AD1 PTB1
// 0 0 0 1 0 AD2 PTB2
// 0 0 0 1 1 AD3 PTB3
// 0 0 1 0 0 AD4 PTB4
// 0 0 1 0 1 AD5 PTB5
// 0 0 1 1 0 AD6 PTB6
// 0 0 1 1 1 AD7 PTB7
// 0 1 0 0 0 AD8 PTD3
// 0 1 0 0 1 AD9 PTD2
// 0 1 0 1 0 AD10 PTD1
// 0 1 0 1 1 AD11 PTD0
// Unused / Reserved
// 1 1 1 0 1 Vdda
// 1 1 1 1 0 Vssa
// 1 1 1 1 1 ADC power off
//#define aADCLK 0x003E // ADC Clock Register 145
// ADIV2:0 7 // ADC Clock Prescaler 0
// ADIV2 ADIV1 ADIV0 ADC Clock Rate
// 0 0 0 ADC input clock / 1
// 0 0 1 ADC input clock / 2
// 0 1 0 ADC input clock / 4
// 0 1 1 ADC input clock / 8
// 1 x x ADC input clock / 16
// 在Fvequency=1M 需要符合的条件
#define ADC_INT_ENA PIN_H(aADSCR,ADC_AIEN) // ADC Interrupt Enabled
#define ADC_INT_DIS PIN_L(aADSCR,ADC_AIEN) // ADC Interrupt Disabled
#define ADC_CONTINUE_ENA PIN_H(aADSCR,ADC_ADCO) // Continuous ADC Conversion
#define ADC_CONTINUE_DIS PIN_L(aADSCR,ADC_ADCO) // One ADC Conversion
#define ADC_PTB0 {asm lda aADSCR; asm and #0xe0; asm sta aADSCR;} // 3+2+3=8 clock
#define ADC_PTB1 {asm lda aADSCR; asm and #0xe0; asm ora #0x01; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB2 {asm lda aADSCR; asm and #0xe0; asm ora #0x02; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB3 {asm lda aADSCR; asm and #0xe0; asm ora #0x03; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB4 {asm lda aADSCR; asm and #0xe0; asm ora #0x04; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB5 {asm lda aADSCR; asm and #0xe0; asm ora #0x05; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB6 {asm lda aADSCR; asm and #0xe0; asm ora #0x06; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTB7 {asm lda aADSCR; asm and #0xe0; asm ora #0x07; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTD3 {asm lda aADSCR; asm and #0xe0; asm ora #0x10; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTD2 {asm lda aADSCR; asm and #0xe0; asm ora #0x11; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTD1 {asm lda aADSCR; asm and #0xe0; asm ora #0x12; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_PTD0 {asm lda aADSCR; asm and #0xe0; asm ora #0x13; asm sta aADSCR;} // 3+2+2+3=10 clock
#define ADC_REFH {asm lda aADSCR; asm and #0xe0; asm ora #0x1d; asm sta aADSCR;} // 3+2+2+3=10 clock
// Test 结果 Vdd=Vdda=Vrefh 使 ADR 数值为 0xff
#define ADC_REFL {asm lda aADSCR; asm and #0xe0; asm ora #0x1e; asm sta aADSCR;} // 3+2+2+3=10 clock
// Test 搬苞 Vdd=Vdda=Vrefh 矫 ADR 儎篮 0x00
#define ADC_DIS {asm lda aADSCR; asm and #0xe0; asm ora #0x1f; asm sta aADSCR;} // 3+2+2+3=10 clock
// Test 搬苞 Vdd=Vdda=Vrefh 矫 ADR 儎篮 0x00
// ADC Input Clock 篮 Bus Clock
// ADC Clock 绰 1M 俊 嘎眠绢具 茄促.
#define ADC_BAUD_1M_1M {asm mov #0x00, aADCLK;}
#define ADC_BAUD_2M_1M {asm mov #0x20, aADCLK;}
#define ADC_BAUD_4M_1M {asm mov #0x40, aADCLK;}
#define ADC_BAUD_8M_1M {asm mov #0x60, aADCLK;}
#define ADC_BAUD_16M_1M {asm mov #0x80, aADCLK;}
#endif
// adc.h end
//*****************************************************
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0