|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: {$ E& X0 E7 s6 q' ], }
void PSCInit(void)/ G" \+ t" O$ g4 U) V( R: k
{
) o* ~8 g7 O4 ~" ] PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ v* I* s" Y4 h$ z7 }/ P}
: p) [' w5 E7 K# f2 ]5 A; |0 x1 S
3 A# Q- O7 s+ bvoid GPIOBankPinMuxSet(void)0 z8 f4 i+ V& Q2 c4 u
{" X5 _- R0 ^2 Y, u Y+ ~6 e
// DRDY ------------ GPIO6[14] -- 111
0 k6 h( [9 S# q0 ^/ k' O // SPI1_CLK ------------ GPIO2[13] -- 46+ r, X) ]3 a' W
// SPI1_SOMI------------ GPIO2[11] -- 442 o% u0 M! |% g6 `, o3 z6 Y- f
// SPI1_SIMO------------ GPIO2[10] -- 43
7 i7 U. U8 `" Z/ ~ // SPI1_CS2 ------------ GPIO1[0] -- 17
6 k: J! d; j/ h // SPI1_CS3 ------------ GPIO1[1] -- 18
/ [2 E3 ]$ e4 ~( V ~5 D# \: B% E% y, F q5 d( G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);1 i# B2 D' ?- R5 Z5 O- c- [- e8 p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
% F' x8 t4 O- w2 W! y5 v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);& k8 o2 c7 ^ j" S- j& ]
( f. o6 }4 _6 A' [4 @ //DRDY
( D5 g7 d$ r6 y& W, a0 o2 U GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: J c, h* U& K8 G6 T v, {
// CS2,CS3
1 x- C7 m0 s% {7 P+ r GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
+ v8 D" L5 a' {6 @ GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ L/ u7 P$ ^7 t //SIMO3 F \" q: |, r( Z" G6 ?* t
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO/ L8 p4 ?: y# l6 B* X2 o
//SOMI
# F, v" F1 f0 Y" ?( O GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" b; `+ S; S5 i7 U j% ^
//CLK9 h. f) M2 y2 L
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK* w9 l+ q2 {7 b) h+ r* n- \
3 Y# B% F2 K' ^- G5 v // LDAC4 n- z+ w0 a0 A/ X. ~* b9 r
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK, o; a3 O8 m- ]! t' U8 Y' ^% o* C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* p, R5 S& H4 \7 @- V. n+ r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, L( r$ w( e& d+ w4 o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
. w3 O/ m( e* K GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
' ? G% i) r$ M}. P4 v+ Q z7 _/ o* @- U9 _9 F
8 U! h6 a8 z3 U+ E$ }# w: |int main(void)
8 [. `( Q' [" k( v" K, D{
) N- `) u; P4 R3 M6 k$ W9 w) f' s // 外设使能
% S2 H1 w4 z% f4 n3 C1 N+ H PSCInit();0 l& n7 H# m- q" P7 X$ U
" D5 `: k. \+ A' G5 _, u
6 e0 s) g- l& | // 管脚复用配置2 M! K) W( [1 }' w
GPIOBankPinMuxSet();
* I5 g$ f0 o' D, k" G for(;;)
6 o& L4 I+ P2 |3 u! ` {% |9 I$ i3 c, _% ~7 d5 M, l
SET_SCLK();//时钟正常输出0 f) e, P$ T; m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 ~, q3 }9 y7 L/ c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ e/ o* m' J) @/ c; Z0 ]2 U
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
! E7 ~6 d' y* ?& A W. Y) |
7 T+ P4 x( y! o" ? delay(20);+ k5 H+ o( E- T8 t
CLR_SCLK();
! Z; `- a; y4 j% {2 q+ w& k GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS30 L: w& ^0 N) p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ d4 h% g- i6 ~$ u; H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN; n; u# V! d, k5 ~+ j$ J
delay(20);
7 X% ~+ Z) d9 P& d" W! m6 n4 P }
7 c6 i& ?3 \( k2 P9 m}
! W7 y' n( e1 C: w7 V |
|