|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# S% v- o, U6 @, R Z+ Avoid PSCInit(void)* t0 ^ w4 h9 L+ O0 \% k. S
{0 a1 a+ q0 `; S( a6 L
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 S5 k: r6 D: N5 c" q8 z( O}' a+ R/ V; i" v
) c9 j5 G: w% c7 Q' H/ N; C
void GPIOBankPinMuxSet(void); t8 i* K6 p' B* A
{) L" B! E0 ~* `" T% w% g2 O
// DRDY ------------ GPIO6[14] -- 111- v7 n# Z. o h+ W8 ]! n
// SPI1_CLK ------------ GPIO2[13] -- 46
. q! b8 O8 ?) |' d" R( P // SPI1_SOMI------------ GPIO2[11] -- 44! y' ~5 j4 p& T. v
// SPI1_SIMO------------ GPIO2[10] -- 43
3 z6 M* W) Q& ` // SPI1_CS2 ------------ GPIO1[0] -- 178 m# B$ t, c, N8 @/ |
// SPI1_CS3 ------------ GPIO1[1] -- 18% W- M+ B4 ?% b$ s' U5 @# c( A
1 k) T# U. Z' e" y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ |: B9 k( ^3 Y% t) c: w! w( |4 J
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);, O2 V% r- c5 x
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 r- o1 W7 F; t
5 L9 r3 v# R U5 u) V/ W' r9 r
//DRDY
; V/ Z2 _' p3 z; F- G GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 f/ c B& I/ |4 O6 v3 Z3 ~2 U // CS2,CS3
) F. W5 g- p3 R" E$ G* i. f6 S GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS21 G7 a# `2 q, G% |
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS37 b( M" J; t5 a, V9 i
//SIMO) h8 i9 T5 U$ j
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO f/ J' u% H$ x: Z) _6 N2 x o1 m
//SOMI. J. P2 M- D5 _6 _4 j E$ d
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ H- F- ~$ S' f" u0 w
//CLK/ j6 C. k4 o# j/ Y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK2 S6 `* `) {) E
" ~% Q( W4 h0 d7 [ e3 f
// LDAC
$ p5 a" k- v% b3 |: z9 F( I1 ` GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 O5 t( Q5 u+ e1 u& q
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% I( q" d6 _ x( ]% G& l# ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2( X4 v( e1 B' Z7 C# t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3, K @# B+ J" x1 C7 X
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
% t" @! h' G- ]! n# c8 i+ A}- f0 B% m0 _2 f1 d' _
; H, V7 p, A- z) Wint main(void)
3 u8 |; x6 X) D{. O# X: K1 z c3 L0 Z& f( W# d
// 外设使能6 i* I+ S. O% x- u+ H! {+ Z
PSCInit();
! A/ Y% ~6 C* B3 P- H' U* C# C
( N2 p9 h7 t1 h7 h2 J$ o% P# r, h
" H. h. X& V, X8 y5 _( G6 N! ~ // 管脚复用配置# _* [1 V" S; X' C% E$ f) ~$ c
GPIOBankPinMuxSet();. J$ G, j' x# Z1 `( y4 Y
for(;;)6 a7 b- E. n8 b/ Z
{
) w8 Q B+ }' r* n9 H- s V; f) Q SET_SCLK();//时钟正常输出1 _1 e* C0 q T9 N0 [* E0 X& P
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2, D% [7 z& D7 n2 x& o5 o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 j `$ r9 m- b; q! Z& p; h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( S( N6 E3 r4 T7 ]! _ C( v0 K4 {- k
3 h3 a& r+ ]' Z1 D delay(20);8 g$ [/ f) m2 ~$ s" `
CLR_SCLK();# ?! j1 j+ s% F
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# o4 @9 B, L7 f" L( B# Z7 i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3& Q; s1 b% q* |% u5 i
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' e M" ~. ~& _3 J delay(20);8 I$ O+ g- ]8 e' ~
} ^* b l) l! [# @4 f7 m
}! J7 v. V8 F2 R# ~0 L
|
|