|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
c! Z5 b5 |: F: c# {2 K8 Zvoid PSCInit(void)
& e0 l; m! h% D* o; \! E5 M{3 l2 l+ @. \4 G- b' H4 M
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);: M' u6 y% D D; V6 ]0 L1 B# C3 T5 A
}/ r* q8 Z7 N2 @6 J1 f0 H
' g1 _! r7 u& n, pvoid GPIOBankPinMuxSet(void)
- V9 \% X4 k( {* c{
: G9 D, l# f h. v* h/ C* d4 V // DRDY ------------ GPIO6[14] -- 111
6 g+ l% Q: c9 g // SPI1_CLK ------------ GPIO2[13] -- 468 m, V$ t4 h, _4 n- U9 i7 H
// SPI1_SOMI------------ GPIO2[11] -- 44
( c. o# O7 ?+ T- _ // SPI1_SIMO------------ GPIO2[10] -- 43% C8 s8 N1 J# J- S3 Y/ n
// SPI1_CS2 ------------ GPIO1[0] -- 175 ~) N7 z: E5 ^8 n. `; G
// SPI1_CS3 ------------ GPIO1[1] -- 18$ d, q' L5 ?. v
, g- q( k8 Y- ]! d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);& R4 _0 {- J% i4 j& s$ U) T0 O* x! z+ U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); q4 j6 V8 t: V7 I2 c8 P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); _: _: b& g' E/ p
+ M! O$ i' q \8 @1 t$ R //DRDY
4 u" C* H- F1 ?9 Z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY0 h' q5 u- S" i; Y2 L* X
// CS2,CS3
! o. S7 k/ X% V0 H5 Z) T GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# ]8 y* V& q9 o. V7 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 @/ f5 Q% t4 Z+ p //SIMO2 C4 {& \% e* q. G9 P$ n6 Q* r4 j7 @6 p
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! i3 W0 J4 g" ~9 q% |
//SOMI( Q# y* {, o8 g& B
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' I7 v- B2 G( e9 t
//CLK
, P2 D0 ~' s% t- G+ Q GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 U: C) @9 x% q2 d
1 m1 |" L5 [& }. `9 X+ O/ O // LDAC
. J- S6 p- A0 P' s6 o- ~6 s/ q* @ GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: F$ t0 n/ n' z9 K& f3 n
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 V _: }2 W7 a: ~' o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
: }8 `3 _# ]1 F GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3& h$ J4 L* _) [
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- \* d$ ~! f1 i/ a m/ d; d}) r1 d2 E" a& l/ g" s8 L
; }2 C; _% Q" W$ ]% n! O
int main(void)
, Z2 J; \) T' g3 R/ A{! `7 b% p: h0 g. D" [/ B
// 外设使能4 ~. s/ j# t4 S: T0 N
PSCInit();4 `: \! b9 x! Q- N! `
* v* `8 B) u$ i- V; {+ V 4 B! M) \0 k& _. G+ b. ]
// 管脚复用配置
; f( I: o% e/ R; @+ B GPIOBankPinMuxSet();
; b2 g* {) A0 ]" j* Z- E* T for(;;)3 H q! c* P. g
{* w. }9 k0 d9 J! Z( C
SET_SCLK();//时钟正常输出: y) c# w! I9 R0 s
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 \- q+ ~- `3 k: i6 T3 q GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
' ? j+ x# X* {9 a! Q7 U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
) @) N4 S b# b+ W+ z6 B7 e4 `* D3 a& L W9 U9 l7 p
delay(20);
* @* Q. n+ b! A! O CLR_SCLK();2 q+ l- }! {2 ]& I" B. H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 ^& U5 E; K# e3 ?+ P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
6 W$ A2 X# U2 R6 o: o+ y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) P) s+ S# Z' T4 ~8 Y
delay(20);
8 |- s! G O2 i3 k$ m: B$ p }
1 w5 K% G* v) r$ k& }, `}* ?! P9 v9 C+ ?8 g$ Y7 |
|
|