|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
, s6 q7 T: M6 {* cvoid PSCInit(void)
- \; x; n; Y! O' F' \; ~{" ]8 z3 f! p. V. e, F' `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 A* {( ?+ k/ n8 c}
7 v2 Q" }6 C1 y! j1 Y
! @2 p, x1 C9 A# vvoid GPIOBankPinMuxSet(void)- v( V7 y8 k8 V
{
; b# g1 E+ U; t% e // DRDY ------------ GPIO6[14] -- 111
2 G# s6 e2 ], m+ \7 |$ V // SPI1_CLK ------------ GPIO2[13] -- 46
1 \! I: I6 E; w, \0 y- ~- ] // SPI1_SOMI------------ GPIO2[11] -- 44
9 @! i9 m0 V B4 {& B# _ // SPI1_SIMO------------ GPIO2[10] -- 43% ~6 T% b% K. T5 x h
// SPI1_CS2 ------------ GPIO1[0] -- 17
( t' l" j6 W5 Z0 a9 T // SPI1_CS3 ------------ GPIO1[1] -- 18% ]- K5 r% w- Z+ Y0 J: k8 `
6 N* H \: T# Z, M. ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# J1 R2 g. G& U8 \% E/ d$ Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' F7 Y1 h9 J2 f4 _2 s. N
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);" L5 z# @7 ?) H1 M( D/ S( T
% | B% o3 T! H5 L
//DRDY
/ [6 h* C- T m# a3 C GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY7 U4 ^# t: p! O2 T
// CS2,CS3
z! Z1 L9 g2 m3 Q- m9 F GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS27 i0 P: _6 l7 p' h* e+ i9 K
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
+ _( L; Q; {7 h4 w( d) h+ R( N5 N //SIMO
: |( t. n( ~/ _8 Q6 p0 X2 a) o GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- g5 b; O9 a, j4 n2 a7 J, G. r& R //SOMI4 [0 y+ d; J/ Z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
2 d3 P* O n5 j* y3 T- ^ //CLK
" u$ j) K9 q; o7 _0 `" }) p GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
. K d: c; s% `, K! {. _* d+ v4 \
$ o' a; j" e/ t2 f( C, d8 }8 M // LDAC
% U# T7 [( a2 g) u, \' V GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK; \( ]* Q& [4 ~# E& s W3 W& c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 N: b. t# T5 v, J3 U9 o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 v$ T5 w4 g. X4 Q. r, V8 \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
4 A) b- X1 l6 V4 v# U4 @ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
3 S: @3 n N4 F- M}' M, I0 { ^3 ^5 e8 ]
1 b# {( |5 l2 Sint main(void)- `7 h1 f, m" H. q! x3 A4 ^3 D) T
{0 [9 \( H( X5 \4 Y& x9 z
// 外设使能! S* T+ m) \+ M/ i
PSCInit();
7 _) M$ a b. N& d+ r: o; z
3 W0 d( x5 } N, Y V( j# n7 l
( H ~$ Q" A0 ~0 x5 a: F. C4 _" } // 管脚复用配置8 _8 @9 Z7 s& q; ^' ~
GPIOBankPinMuxSet();
n! R0 c( w8 V( |: \! c: L% Q for(;;)2 L- {& g2 h/ r5 {
{2 z ~0 O& f7 e* l+ o: ~5 @; _
SET_SCLK();//时钟正常输出
0 u; M4 W9 f( W6 H: a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
$ @, M: `! x/ x$ N | w GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& i7 E1 b$ n; v- l3 c) ^) a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; i& s9 s- q6 E' z6 n e
* `# _" q# |1 W% t7 ~ delay(20);0 `, X! \4 I8 o/ }& g/ ~
CLR_SCLK();
: u" k& n% U, N8 V$ U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ g3 S/ c4 i4 q2 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
+ l3 x( O5 @+ n8 Y9 D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) k, E' V( Y" Z$ V
delay(20);8 n! S9 i W4 F. k/ I5 z% ]. @
}' v; k7 d# G) B. O( ]
}
# L5 c% N, P( }' F: i. g0 p |
|