|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 D! W7 S: o6 u
void PSCInit(void)5 P4 Q% O: q+ f7 y! W9 p8 A8 h3 D
{+ I2 C1 D, U9 ~3 y" ]3 V ?
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 @+ l9 z' G* `' T}* O+ i( v I$ w y$ x# I
6 }+ t: k) \# o4 D$ }$ Lvoid GPIOBankPinMuxSet(void)/ @7 l; W( R* b$ | G
{
% H- a8 M* s3 ` Q. b // DRDY ------------ GPIO6[14] -- 111
5 K& V7 p5 L7 `! p$ b4 \) L0 M$ w // SPI1_CLK ------------ GPIO2[13] -- 462 c& r* @" H3 A# v# l
// SPI1_SOMI------------ GPIO2[11] -- 44
9 r3 V4 D- K2 m( q7 @ // SPI1_SIMO------------ GPIO2[10] -- 43; Z1 N" b v" O
// SPI1_CS2 ------------ GPIO1[0] -- 17* y6 s0 u4 A! c' M( e5 Y# a
// SPI1_CS3 ------------ GPIO1[1] -- 18
( _7 N6 _% p2 U5 N
! z, a+ V" w3 X8 | HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' k9 X; \) G! v7 J3 Y7 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);( F7 l( j0 I8 M4 b& l' K7 O& y" H
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);9 O- I& G- f0 ^8 O% C
q4 g+ C0 X C6 g6 Q) x
//DRDY/ k$ ^3 b, Y6 `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, }+ S' }6 R4 g // CS2,CS3
* o3 I l, e6 |8 B' M# @ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* K, ?+ Z5 ~0 x! S& ` GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3# A- v# m" `& z3 i/ Y
//SIMO
/ H \% m6 @& s: @& `+ [ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( `$ o$ t. R3 x' B //SOMI
2 ]- i, @8 i5 h5 |7 p6 m GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI/ Z' V4 J' r# `6 U& ]
//CLK
- G- B1 L( n8 X GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ E4 _/ Z9 e6 u$ ?/ W6 g
% J4 Q& E9 [/ B: T# ^% l' d // LDAC
' O/ r. l$ j5 \* v' D" i GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
: B. L; R* K* V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 ^/ t" N8 \+ s+ o$ r+ |/ z1 `4 W9 C GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 e1 { Y. }) `. N- |8 `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, b* w, `7 Y$ O* e- H
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( a, e# ~/ n8 x" _4 N
}
1 Y6 `" p: r9 A$ h+ w( z8 p
9 D0 }# O7 t4 K9 S" m2 S/ S2 @int main(void); V. @3 u2 K6 L- M* ]
{
; F7 y3 C, t7 f4 J* U& t // 外设使能% m! c; O6 O4 J% C- V+ |' r
PSCInit();
; q8 c9 u Q Q! K/ p* w4 |* b; j3 I) j6 v5 A0 H! Q" p
' p( I( t1 V5 v0 f // 管脚复用配置1 t' w& X# a, _
GPIOBankPinMuxSet();. W$ ^% T+ B# b% z8 [
for(;;)
4 H+ H) y0 B+ @; E! S" s4 ] {
c: R9 R' L1 X" a& w; K+ ?, s8 k SET_SCLK();//时钟正常输出
7 ?8 X. O! p+ {8 N$ X; E) p# o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
5 m2 x/ {! U; F! W8 m( q1 A7 I3 y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, s5 m% k4 b( B: c ^
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; g8 M" U0 r( J) ^* e: ^
5 N# p) X2 C' K7 g3 ?* D; M delay(20);/ o& H' N) U) l; ~) E. \
CLR_SCLK();' L1 v) B: r1 Q) i$ a9 Y6 ^- A
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ y( Z8 R$ h9 t6 N# r& A+ y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 V; `- n6 q5 Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. L% i$ t; b( W3 Z6 o delay(20);# z9 X, Y9 B1 o, @
}
9 z) g) [' l( f5 _$ u+ E}" v" a9 R/ i' \9 v! a
|
|