|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 ~2 N9 T+ S; W& j. q# d- ]7 u" @
void PSCInit(void)
0 u' Y4 f# j, h& {$ k/ S{+ ?0 d% T- Y) I
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 C, H q2 ?; @+ o
}( U7 a$ V2 v% g% P# s3 r" v/ h
; F" O2 t, P0 k+ x9 T
void GPIOBankPinMuxSet(void)& l2 j& q: H6 U
{
9 o7 D) \: W, ?: q8 G3 w+ F // DRDY ------------ GPIO6[14] -- 111! K. E/ z* V) F$ y+ v; y p
// SPI1_CLK ------------ GPIO2[13] -- 46
* |! |/ o2 k. N9 V0 O! j6 n9 z // SPI1_SOMI------------ GPIO2[11] -- 44; y4 r1 _8 P/ D) g5 [. v! y
// SPI1_SIMO------------ GPIO2[10] -- 43) Q. N" L% x6 g; U
// SPI1_CS2 ------------ GPIO1[0] -- 17# b! Q) ?1 J8 n" _5 s6 |8 u
// SPI1_CS3 ------------ GPIO1[1] -- 18
: r% h; B2 X5 B5 l( f0 n* M9 E3 b q1 _ ~/ Q1 \6 l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% g2 P5 P( |' [( G( V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);2 n0 C0 E' e# @$ |7 Q
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' m( _* } {2 H* R" G6 ?0 Z
. A! m3 J0 x( E! e //DRDY
, \% M- F0 e1 P' S C GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ c6 k. [( r" B2 F7 O // CS2,CS3
$ r. ~9 p4 W+ X$ S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 {; s1 h& E# {+ W; b @
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; N3 Q3 i/ w: P& q9 s/ W" t8 f9 M
//SIMO/ X# O. U& k7 E D5 w
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
) {) r, L; ?$ m( U- x( ?5 C5 J5 B2 g //SOMI& ^: s9 J) w/ U: P
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. {5 _& X+ p6 V3 _6 T; X- ]5 `/ T/ F
//CLK- V& S X9 i* n- L- x: ~& m9 f: h
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 K1 T! M5 U; |% I$ S' c5 H
. r* q; m4 a- R' W' X // LDAC' y# C& U- x. n4 |( U# B# {
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* h1 F: B; G* S0 i, r9 X8 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN6 t& f, w: R# s9 ~, P+ p4 F/ H( S" e5 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: A- r2 h: x2 ^8 O# k. G' _9 t! c; z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: { Q4 j( ^* M/ r6 U6 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
3 q8 g+ g8 F: a. ]1 M2 a}
" l7 w9 M8 P: ~2 e
/ A9 @$ T! ?' x5 \8 e: X7 j" f Vint main(void)
8 N5 L8 g2 t) B. J: [- v. V{
# A* Q% F4 l, b6 I6 a' T0 a' S+ A // 外设使能* ]. Z! h9 e& {- T9 Z+ n; r
PSCInit();
+ u" B h* M M$ }; h- {
1 i) s% e6 h0 ]' f: F) Z 6 w& f' m1 k+ ?$ B8 |2 \4 x
// 管脚复用配置! z8 ~; b/ t' P
GPIOBankPinMuxSet();7 s5 f2 A1 a: @+ Z3 j' x3 i
for(;;)
2 Y0 n4 ?# }8 { | {
3 |9 o/ [9 [* _1 m: R' G6 V SET_SCLK();//时钟正常输出
( g* [, N% s* H. Z G7 C3 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 U4 a- F7 F4 k. X( P D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS37 r5 j, f7 ?/ }" w, d. `, A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 Y) N8 V" P& {( H, G+ V) E5 P! [- a' N! ]
delay(20);
8 U5 T' [- s% W8 i. \+ |( C CLR_SCLK();4 f E; H5 D4 L/ v$ q# J$ m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# R% a( ?* O1 W c5 n W$ f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3: F& W" c+ E- a: C" O2 ?# a& \8 A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 ^, j" D. A2 s2 _) N delay(20);- e/ |0 y( c5 B* a6 O
}
* V t$ U: N: X5 v- }}
* [3 D2 e! q+ M |
|