Can anyone tell me what's the different ?
sounds the same to me . I found BitIO_LDD has one more function "Auto initialization" .
But still confuse me that why a lot of peripheral has other _LDD type component?
Historically, there were first the Embedded Components (aka 'Beans'). This is what you have for example as BitIO.
Because that API (no device handle used) did not scale well if used in a context with an operating system, a new category of components (LDD = Logical Device Drivers) had been created. To provide compatibility, some of the 'Beans' for Kinetis are a wrapper to the LDD components to make migration of projects easier.
As all the LDD components need to have a 'device handle' as parameter, you can create that handle either with the Init() method, or have it created automatically with the 'Auto initialization' setting.
I hope this helps,
Erich
PS: you might have a read here about some of the things I mentioned: There is a Time and Date for both Worlds | MCU on Eclipse
Thanks Erich:
According to your article.
I think for the one who dosen't use a RTOS should have to choose non-LDD device than LDD-deivce.
And I found your article date , it is written in 2012.
I guess we can use dual interface but not only LDD right now?
So I can use BitIO than BitIO_LDD
So if I want to use a SPI interface , I had better to choose Synchro Master than SPI Master LDD , right?
You can use BitIO and BitIO both with and without an RTOS, it does not matter. The BitIIO_LDD is more 'tuned' towards if you are using MQX, but really: an RTOS should not make a dependency on drivers, or use an abstraction layer, like the Kinetis SDK.
Mentioning the SDK: if you are using the Kinetis SDK, then there is a third category of components, the fsl_xxx ones. If using the Kinetis SDK, both the BitIO and BitIO_LDD ones are not available (working).
As for the SPI: I prefer to use the SynchroMaster component, as having an easier API and easier to use. But it is up to you: you can use the one or the other.
Erich