|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; m" d) Z3 G( @9 _9 s, ^void PSCInit(void)
/ P7 o' g I0 W2 I# y{: N- X2 K2 p7 _4 X
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ B5 m' W! M8 L+ C
}+ n- L4 u. w+ A* v; m5 @. B8 [
" {5 k2 b( X& dvoid GPIOBankPinMuxSet(void)
, O4 U/ S; \* O, ]( h) [+ i3 M{0 z$ O: `$ o/ M l; j1 {5 U2 ~
// DRDY ------------ GPIO6[14] -- 111
- i8 g5 y/ f9 t) B // SPI1_CLK ------------ GPIO2[13] -- 46
$ z& u) V$ b. E- P! k, O T( ` // SPI1_SOMI------------ GPIO2[11] -- 44
5 Z6 {" r; [. f* i- J // SPI1_SIMO------------ GPIO2[10] -- 433 H1 g: J W6 P4 A
// SPI1_CS2 ------------ GPIO1[0] -- 17
: ~. b% e5 R7 I, t- j // SPI1_CS3 ------------ GPIO1[1] -- 18
- k- J& Q# I- `- w
; z1 s0 `8 h: A- l# v% u: g4 B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( ]- H& s) i. |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* p4 e/ H5 @. F# v/ a
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
) S$ s+ f' w8 C5 `8 [8 h# o2 i3 ?! |$ H4 `0 D8 T; b, N1 U% }8 ]0 ]
//DRDY$ T! M* u3 i. ^3 H) Q
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
' L8 U& A5 Y+ t8 A, ~+ f // CS2,CS3
% P+ ~$ L' l1 k9 S% l3 V$ `- h GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 x% D* ?( T7 |. k C
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 y1 Z4 p, |4 M' e1 U
//SIMO1 z, a8 v6 @, P) Y7 ] ]; |
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
" u! d2 Y6 d9 I; v. ~" _ //SOMI
/ D, B; |& ]! B Z( I2 D GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
G4 F4 }5 J' l9 D //CLK
+ \. ^" Y+ U h* r$ M; q# | GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
/ C3 [' z2 a9 [' ]# W# D6 a) B I: m- K$ c/ A1 n
// LDAC
2 e9 y/ o. J2 o" c GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& L9 M0 O; C- m: B. S1 o1 z" P* L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. G+ K4 q F9 F' s* x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
+ A# |4 O2 ?4 k GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 A4 v( o0 o' X y% g/ B7 F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, E$ f1 z. Z* n4 O' R4 V}
% e5 ^9 `. k) e% G$ i8 b
, @ C: N5 ~( V- n2 ]2 Mint main(void)- Q1 N6 o" ^9 [. I& y7 n
{7 F; [9 k7 Y- p" {6 K, ~; c
// 外设使能
8 a# w3 T% p4 r, N PSCInit();
6 S/ P! D& I+ E4 {2 Y0 x$ Z" W$ j6 ?+ {( u( z2 R! D9 I
9 x _9 _4 [; B! c
// 管脚复用配置
* N, ~1 @/ ~! N" x; ~- { GPIOBankPinMuxSet();
) [6 I- w* r- }; |/ p for(;;)
6 w. F: L2 ?& f9 ?) u, g {% f, t B0 g9 w
SET_SCLK();//时钟正常输出0 `* n+ s/ l6 f" l: G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2. v9 k [4 S7 k. M
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ A5 t0 `1 r( H5 v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
$ X: P0 h0 @6 S6 O# ]7 h) B. v6 _: z! m2 T, R- x2 e- h
delay(20);
$ N0 ?1 x5 a% o* V3 \ CLR_SCLK();$ A, m# X3 f1 t% ~! E2 p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3+ _+ X- L2 f9 ]2 U8 ?5 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 k1 z, v5 }8 s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, T, T% `4 h+ z# u delay(20);
/ S! e3 C: P% I2 [" } }
7 r7 B# [8 w0 r8 a- J d}
, C0 A3 ^ [, E* e |
|