|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 K3 i) ^6 k# V% V' m/ p
void PSCInit(void)
% L$ K* n5 l8 S{
( n+ `+ {5 y$ N6 {, R PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
5 F5 C! W% D4 z d! j}
5 |9 c: P0 E: a2 H" {( K, J( ^& O3 x
% t' `1 E- D" B0 m- Uvoid GPIOBankPinMuxSet(void)5 b; D9 R) ?7 l9 q0 U" ?
{5 P* E2 W- Z* g- N# J
// DRDY ------------ GPIO6[14] -- 111& T/ J* L# f# X( v+ E' o9 |
// SPI1_CLK ------------ GPIO2[13] -- 46
& X1 d/ P5 P6 @8 ]- I/ l. z+ f // SPI1_SOMI------------ GPIO2[11] -- 44
% o5 K* y% _$ r // SPI1_SIMO------------ GPIO2[10] -- 432 ~) D& Q8 |/ v+ v7 K$ g
// SPI1_CS2 ------------ GPIO1[0] -- 17
. F0 ]1 h, X% S' b) ~& x. }% E // SPI1_CS3 ------------ GPIO1[1] -- 181 e7 T0 [3 [! W# Z4 W4 i
8 L) F" Q$ ~# W! O
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
+ h/ w [( @4 V' h3 r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 ?2 L/ F, ]4 K# a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
( @, `. ^1 Z& @! N# J2 v# A& |/ N- \; O9 q; l9 Q/ X
//DRDY
, Z+ T Y, d" M GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY+ _5 v0 T1 C& y9 l [4 z' q; H
// CS2,CS3
0 ?: {' G4 j# c8 u X! w GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ ^( v+ W7 B( M; `
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. l" [# B( ?- G
//SIMO* j# O$ a3 e, F2 j1 L" E- k
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
3 t" K( e r! Y$ r- O //SOMI) d$ \9 t+ E% `8 C1 [8 q! A ~
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
$ j0 F$ Y) ~# ?: @& l //CLK3 Y* U \" C% X, ]" B
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK0 l' Y, q9 z b4 Y7 x
+ h: Z* H) Z5 b
// LDAC
}! s& z0 ^* z9 Z GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 M4 @) z7 ]4 }1 y) Q) q+ E- D4 o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, p; V* n, v3 n7 h0 l! s+ |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ X1 }! R) P n7 Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) m/ U' \) C! |6 t' n7 p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 u* x# m* [. C5 y# |
}( `* b6 @' V9 Y b
9 Z& R9 \7 y7 M7 e! ~0 z
int main(void)
8 ]. i5 j0 g8 a' D{3 g- X! w7 M& {) G$ ~% C! m ^
// 外设使能. v1 p! U! O. ~' Z# T2 @# [6 ?
PSCInit();4 K4 ]& \! t9 _! G" z9 v+ `
0 r/ I+ U4 [ P0 T( p : h; \! w" V; z$ N( W1 h0 y
// 管脚复用配置% x' I% [: y. O. D. k3 y: f0 R
GPIOBankPinMuxSet(); J. M* \% I' V: m/ X
for(;;)
; ~5 B. }# W! ?. Z1 } {% v$ n. }& N2 b/ K
SET_SCLK();//时钟正常输出0 B |- y% l* F5 o, |) I# j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
8 E) `& W. ]; G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 Q& w @$ [, M* a5 O+ {5 w- t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ h6 v! e9 G5 ~8 N+ C/ O) z
' j% U2 t2 N! ~
delay(20);
: ^; U; i. F. y/ y1 O CLR_SCLK();
% E$ z& T! n$ d$ L! ? b1 W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3* v+ q1 y" i/ q5 J$ Q; l! d( u N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS32 C3 J, y0 u4 [- _
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. L' w; n% B+ u/ G$ a) h/ a. ]0 q" Q
delay(20);& f e& N' M. K" u5 p
}
( Z, H0 _6 m4 G* \}3 p& ^0 ^' R6 C
|
|