|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 Z! g& _& t ~& h7 k
void PSCInit(void)
# l/ |+ B7 f Q8 l; X; r* I$ ~{' W0 V6 W6 U, F z/ l- @& ]2 ]
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);& o! Q& e4 A! v' X' j* U4 g3 ^( x
}
0 Z7 C3 U0 Z+ p8 @9 W7 C. {# w4 g) \7 W8 E
void GPIOBankPinMuxSet(void)% r: X- W, z. U# l T; W
{
: ?) N# Q# F- v# H$ s# _6 {' F8 M // DRDY ------------ GPIO6[14] -- 111
- O" k8 S I, s) P: n5 {) v$ D // SPI1_CLK ------------ GPIO2[13] -- 46, D8 l9 e9 k6 Q- m
// SPI1_SOMI------------ GPIO2[11] -- 44( {5 l. F/ q+ F# z) u% z
// SPI1_SIMO------------ GPIO2[10] -- 43
2 ]: }! R4 ]6 C" l // SPI1_CS2 ------------ GPIO1[0] -- 17
6 K, r; o8 d9 X8 R7 A2 ` // SPI1_CS3 ------------ GPIO1[1] -- 18
8 [4 F/ F- }/ N3 s5 X
& K% ?, M' z* T ]2 s' N& f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ F& N' I2 V/ u; `: \7 e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& E; n# l8 q- ]+ D% i( i4 a( |9 d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
& I$ B$ D a# ^+ Y0 A& @# M
0 n, }* p/ I! f8 V' E$ a$ _ //DRDY9 H1 `; I0 K) c9 ]1 x* P
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* M3 t# A- P; G4 O! u
// CS2,CS3
- g$ r2 \" g* Q* S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
' B" B4 N1 A3 u, Q' X0 [! H GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS34 b9 x R K: P. n ?) f
//SIMO
$ C( y) S9 U9 \8 g+ t T7 o7 Z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO$ g5 N, Q8 ^1 @: R+ p
//SOMI+ Y" w5 {$ n; R; z( T- L
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI2 @3 i5 k! @( \3 X
//CLK, l! q5 h4 N, s9 T5 ]
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK$ j2 l5 M L- |9 u6 g" M! ^0 b/ {
! L9 ]6 q7 |% Y$ s- i
// LDAC
: m! K" C2 e [# [) u, i- }: x4 w" t GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
( v7 i" i0 O$ {8 ^: n. U* m6 M GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& e6 u/ H% v( l! Y9 u! b# V& v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! P7 S# u0 F0 @5 U9 H5 v( Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, Z3 a6 G0 l7 s1 O. j/ t
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY h. u* W7 f# h: |4 o6 u( {# y
}
9 _& d% K3 C8 M/ _
- Q1 b0 a' c8 k0 ?3 d9 c$ Jint main(void)
9 `4 i" A8 U. Q; t# J: s{. g; g& H3 V: Q+ M: T: ]
// 外设使能' g+ F- N( K+ C" R
PSCInit();9 B" j( N4 G; X
! j( Q0 {- e2 X7 ~6 H% d2 R
! F2 T; c# v% v1 X L# \ b, z
// 管脚复用配置
3 q* K# m s, o1 L6 V% X$ ? GPIOBankPinMuxSet();
: H4 T) j- [9 x' s1 \ for(;;): o, Y' a& k9 D5 A" [1 j' Y
{3 f8 @. x" F7 V$ Z5 z- d& [) g
SET_SCLK();//时钟正常输出9 k( M) l" l+ ?1 ~& S/ K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ Z- K/ o) e1 k6 m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
+ B/ Q$ Z O7 y+ _9 H2 n U6 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' V7 o u- I3 s9 G
) f1 U3 }' h. Y& G( E% K$ I0 G delay(20);
: v$ L; ?/ }. E- p* Q5 D CLR_SCLK();
$ o- e9 L, h. t4 I: G F' ~8 H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
$ Y# T% j" \" p, n GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 V7 E( X( g9 Z8 s! m$ I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 s! T! k6 u( Q8 u/ _8 ]
delay(20);
4 Y& H- u! R1 }1 e# D) [ }
' r2 m) Z9 Z5 }' u}. L1 r8 ]6 D; h( |
|
|