|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
" a# R$ ]6 h1 T! L' J* Rvoid PSCInit(void)
: b) b% ~0 A9 q) Y+ i& h3 w{6 W6 C3 b& Y L
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
* K$ o) L8 E2 C. G& i5 U4 x- n}
$ r/ T& S7 _6 ]% e. m* e/ l& x9 `: C4 M( x' i P! x* z
void GPIOBankPinMuxSet(void)% A5 z- V A! T/ H- c5 o
{3 O' V( }8 L4 E( j
// DRDY ------------ GPIO6[14] -- 111! L! c4 w: @# R$ X9 e& \1 M
// SPI1_CLK ------------ GPIO2[13] -- 462 [( f. [4 `0 D/ R9 N( ~
// SPI1_SOMI------------ GPIO2[11] -- 44
- @: J# B/ G8 r // SPI1_SIMO------------ GPIO2[10] -- 43
! o( |( s1 ?- l5 ? // SPI1_CS2 ------------ GPIO1[0] -- 17
5 g* L! |- }0 m' u7 @1 M6 J // SPI1_CS3 ------------ GPIO1[1] -- 18: c7 B( c6 j9 a. y! \6 \/ K
2 `" o! g6 _# x* O6 U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% S4 C \5 i0 r2 |/ r2 E/ ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
9 a$ S# K% ]" y( W4 Y2 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) F$ Q# j1 m8 b+ Y' R0 J$ {# b2 u* `5 r! j+ ~: O) s
//DRDY5 `7 V& l$ z( k6 W, G$ Y9 ~' K
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY$ R; s! _, k! p M- t1 O( X" @
// CS2,CS3% [: M7 Y% N5 B! X) M! G: O
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2& x$ H- }7 o; y& j8 c
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3* m& a5 `4 J. a% l" F' \ l0 i
//SIMO
+ f0 z9 H5 l( n7 y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
+ d4 l9 o8 e; b1 E; b/ l //SOMI
: j* f$ {2 _ G* k) E GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 v- r( l5 D. E2 @8 f4 H7 A //CLK
5 ~# [& j/ {9 Y( J& B: u0 T z2 h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 _1 S2 ]! W- f( z0 p/ q8 B0 V+ w1 a& G; r
// LDAC C1 g! Y7 M" c+ b
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
) ^. A$ u9 G% l/ @% e0 @$ d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ p- }* N0 _$ T+ a0 n4 b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% m5 o% E3 x7 L1 f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
9 i: f9 E8 m$ I0 w" v, j GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# p. |$ {5 G7 d9 j& ?8 L5 z v}+ B: a( z4 _- Y8 I
' y0 p3 A r& x6 `
int main(void)
9 b0 }" x( c M" P# n2 o5 ]# \( i4 A3 X! x{* _# j S5 K3 C+ b" i; u L# W
// 外设使能0 _, @' j. O% Y
PSCInit();
- }& a# m9 e3 f& H8 m7 ^! B3 S, o7 v/ `
: j% q' J: z& N; m# r // 管脚复用配置
, b$ I' Y" o" {( v+ q GPIOBankPinMuxSet();3 n) v2 P) c- k1 o6 k4 e
for(;;)
) w/ |2 T1 H+ o' i% {6 O$ d8 W {( z0 K# ] }/ \' h# \) d
SET_SCLK();//时钟正常输出- W8 i; H# _$ S: }# @* K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ C9 t7 g4 g; ?! n* @1 K( [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3: g0 ~8 `- |8 q/ W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 Y% O% ]8 p3 P/ p
; [9 E. ~9 e5 n: o2 V. `' F$ a delay(20);
5 E1 I( j6 }- M. H7 h, P5 l CLR_SCLK();5 s. o6 I) O9 f0 _8 v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
; A6 x+ s: e; {( j% L# ^: O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 N7 u" s) _7 o+ p) N, d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 t" U8 L% s' i5 g, ]8 ^% o- ^$ G9 y delay(20);. J' T7 f) s1 Y3 Y+ y, n
}8 \/ R0 a" y+ U" z- i7 e% L
}
( B( ~ N8 `: K& l9 K |
|